📄 udpsend.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 SendFrame2 extends Frame implements Runnable,ActionListener
{ TextField out_message=new TextField("我是数据包的真正内容");
TextArea in_message=new TextArea();
Button b=new Button("开始发送数据包");
Button b2=new Button("停\n止\n发\n送\n");
Thread thread=new Thread(this);
SendFrame2()
{ super("UDP自动发送");
setSize(200,200);
setVisible(true);
b.addActionListener(this);
b2.addActionListener(this);
b.setBackground(Color.cyan);
b2.setBackground(Color.cyan);
in_message.setBackground(Color.green);
add(out_message,"South");
add(in_message,"Center");
add(b,"North");
add(b2,"East");
}
//--------------------------------点击按扭控制发送数据包或停止发送-----------------------------------------//
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==b)
{
if(!(thread.isAlive()))
{ thread=new Thread(this);
}
try { thread.start();
}
catch(Exception e1)
{
in_message.setText("");
in_message.append("先点停止按钮后才能再点击开始发送按钮!");
}
}
else if(event.getSource()==b2)
{
thread.interrupt();
in_message.setText("");
in_message.append("已停止!");
//thread.yield();
//thread=null;
}
}
//-------------------------------------run函数用于发送数据报-----------------------------------------//
public void run()
{ byte buffer[]=out_message.getText().trim().getBytes();//这句是从文本框里取得要发送内容
try{ InetAddress address=InetAddress.getByName("hdyx-jxq");//对方的IP或主机名
//数据包的目标端口是888(那么收方(北京)需在这个端口接收):
DatagramPacket data_pack=new DatagramPacket(buffer,buffer.length, address,3700);
DatagramSocket mail_data=new DatagramSocket();
Thread thread=new Thread(this);
int i=0;
while(true)
{
i++;
in_message.append("正在发送第"+i+"次数据...\n");
in_message.append("发送端地址:" + data_pack.getAddress() + "\n"); //是自己的IP
in_message.append("发送端端口:" + data_pack.getPort() + "\n");
in_message.append("数据报长度:" + data_pack.getLength() + "\n");
in_message.append("发送内容:"+new String(data_pack.getData())+"\n");
mail_data.send(data_pack); //发送
thread.sleep(2000);
}
}
catch(Exception e){}
}
}
public class UDPSend
{ public static void main(String args[])
{ SendFrame2 shanghai_win=new SendFrame2();
shanghai_win.addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{System.exit(0);
}
});
shanghai_win.pack();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -