java编的网络通信,简单的通信程序(1)

package mysocket2;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.*;
import java.awt.event.*;

public class Frame1 extends JFrame implements Runnable {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    JPanel jPanel1 = new JPanel();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea jTextArea1 = new JTextArea();
    JTextField jTextField1 = new JTextField();
    JButton jButton1 = new JButton();
    public void run(){
        byte buffer[]=new byte[ 1024];
        try{
            DatagramSocket so=new DatagramSocket(5555);
            DatagramPacket p=new DatagramPacket(buffer,buffer.length );
           while(true){
               so.receive(p);
              String host= p.getAddress() .getHostName() ;
              int lenght=p.getLength() ;
              String message=new String(p.getData() ,0,lenght);
              int port=p.getPort() ;
              jTextArea1.append(host+"发来消息:"+message+"/n");
              jTextArea1.append("数据长度:"+lenght+"/n");
              jTextArea1.append("数据来源:"+port+"端口/n");
           }
        }
        catch(Exception e){
            e.printStackTrace() ;
        }
    }

    public Frame1() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
            Thread t=new Thread(this);
            t.start() ;
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(400, 300));
        setTitle("上海");
        jButton1.setText("发送");
        jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
        jTextField1.setColumns(40);
        jPanel1.add(jTextField1);
        jPanel1.add(jButton1);
        contentPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);
        contentPane.add(jPanel1, java.awt.BorderLayout.NORTH);
        jScrollPane1.getViewport().add(jTextArea1);
    }

    public void jButton1_actionPerformed(ActionEvent e) {
       byte data[]=jTextField1.getText().getBytes();
       try{
           DatagramSocket so=new DatagramSocket() ;
           InetAddress address=InetAddress.getByName("localhost");
           DatagramPacket p=new DatagramPacket(data,data.length ,address,6666);
           so.send(p);
           jTextField1.setText("");
       }
       catch(Exception ee){
           ee.printStackTrace() ;
       }
    }
}


class Frame1_jButton1_actionAdapter implements ActionListener {
    private Frame1 adaptee;
    Frame1_jButton1_actionAdapter(Frame1 adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
    }
}

 

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值