📄 shanghai.java
字号:
package socket.test.udp;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */import java.net.*;import java.awt.*;import java.awt.event.*;class Shanghai_Frame extends Frame implements Runnable,ActionListener{ TextField out_message=new TextField("发送数据到北京:"); TextArea in_message=new TextArea(); Button b=new Button("发送数据包到北京"); Shanghai_Frame() { super("我是上海"); setSize(200,200); setVisible(true); b.addActionListener(this); add(out_message,"South"); add(in_message,"Center"); add(b,"North"); Thread thread=new Thread(this); thread.start();//线程负责接收数据包 } //--------------------------------点击按扭发送数据包:-----------------------------------------// public void actionPerformed(ActionEvent event) { byte buffer[]=out_message.getText().trim().getBytes(); try{ InetAddress address=InetAddress.getByName("192.168.0.98");//对方的IP或主机名 //数据包的目标端口是888(那么收方(北京)需在这个端口接收): DatagramPacket data_pack=new DatagramPacket(buffer,buffer.length, address,888); DatagramSocket mail_data=new DatagramSocket(); in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n");//是自己的IP in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n"); in_message.append("数据报长度:"+data_pack.getLength()+"\n"); mail_data.send(data_pack);//发送 } catch(Exception e){} }//-------------------------------------run函数捕获数据报-----------------------------------------// public void run() { DatagramPacket pack=null; DatagramSocket mail_data=null; byte data[]=new byte[8192]; try{ pack=new DatagramPacket(data,data.length); //使用端口666来接收数据包(因为北京发来的数据报的目标端口是666)。 mail_data=new DatagramSocket(666); } catch(Exception e){} while(true) { if(mail_data==null) break; else try{ mail_data.receive(pack); int length=pack.getLength(); //获取收到的数据的实际长度。 InetAddress adress=pack.getAddress();//获取收到的数据包的始发地址。 int port=pack.getPort();//获取收到的数据包的始发端口。 String message=new String(pack.getData(),0,length); in_message.append("收到数据长度:"+length+"\n"); in_message.append("收到数据来自:"+adress+"端口:"+port+"\n"); in_message.append("收到数据是:"+message+"\n"); in_message.append("来自上海"); } catch(Exception e){} } }}public class Shanghai{ Button button1 = new Button(); public static void main(String args[]) { Shanghai_Frame shanghai_win=new Shanghai_Frame(); shanghai_win.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0); } }); shanghai_win.pack(); } public Shanghai() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { button1.setLabel("button1"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -