关于UDP和多线程的问题!!

Linkyo 2006-01-07 01:12:56
请问UDP的多线程怎么实现!!
我想在While语句中不听的监听,在接到数据报后启动一个线程,请问怎么实现!!!
...全文
364 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzl32 2006-01-07
  • 打赏
  • 举报
回复
发送
import java.net.*;
import java.io.IOException;

public class UDPsend {

public static void main(String[] args){

try{
DatagramSocket ds = new DatagramSocket();
String data = null ;
try{
data = args[0];
}catch(ArrayIndexOutOfBoundsException e)
{
data = "你好 茜儿!\nHello XiEr !";
}

DatagramPacket dp = new DatagramPacket(data.getBytes(),data.length(),InetAddress.getByName("127.0.0.1"),3000);

ds.send(dp);
ds.close();
}
catch(SocketException sException){

System.out.println("the socket could not be opened ");
}
catch(IOException ioE){

System.out.println("I/O error occurs ");
}

}
}

接收
import java.net.*;
import java.io.IOException;

public class UDPrecv {

public static void main(String[] args) {

while(true)
{
try {
DatagramSocket ds = new DatagramSocket(3000);

byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);

ds.receive(dp);
String msg = new String(dp.getData(),0,dp.getLength());
System.out.println( msg + " From :"+dp.getAddress().getHostAddress() + " Port :"+
dp.getPort() );
ds.close();

if (msg.equals("bye"))
break;
}
catch(SocketException sException){

System.out.println("the socket could not be opened ");
}
catch(IOException ioE){

System.out.println("I/O error occurs ");
}
}
}
}

运行:
1) 启动接收
F:\>java UDPrecv
Hello World! From :127.0.0.1 Port :2274
bye From :127.0.0.1 Port :2285

F:\>java UDPrecv
你好 茜儿!
Hello X From :127.0.0.1 Port :2405
bye From :127.0.0.1 Port :2410

F:\>

2) 启动发送
F:\>java UDPsend

F:\>java UDPsend bye

F:\>

输入bye 将退出监听

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧