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

package mysocket2;

import java.awt.*;

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.DatagramPacket;
import java.net.*;

public class Frame2 extends JFrame implements Runnable {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    JPanel jPanel1 = new JPanel();
    JTextField jTextField1 = new JTextField();
    JButton jButton1 = new JButton();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea jTextArea1 = new JTextArea();
    public void run(){
       byte buffer[]=new byte[ 1024];
       try{
           DatagramSocket so=new DatagramSocket(6666);
           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 Frame2() {
        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 Frame2_jButton1_actionAdapter(this));
        jTextField1.setColumns(40);
        jPanel1.add(jTextField1);
        jPanel1.add(jButton1);
        jScrollPane1.getViewport().add(jTextArea1);

        contentPane.add(jPanel1, java.awt.BorderLayout.NORTH);
        contentPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);
    }

    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,5555);
      so.send(p);
      jTextField1.setText("");
  }
  catch(Exception ee){
      ee.printStackTrace() ;
  }

    }
}


class Frame2_jButton1_actionAdapter implements ActionListener {
    private Frame2 adaptee;
    Frame2_jButton1_actionAdapter(Frame2 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、付费专栏及课程。

余额充值