您的位置:首页 > 其它

UDP利用多线程实现数据的发送和接收

2015-08-11 14:41 696 查看
package broadview;

import java.io.*;

import java.net.*;

public class QQ_UDP {

/**
* @throws Exception 
* @利用多线程实现数据的发送和接收
*/
public static void main(String[] args) throws Exception {

DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receSocket = new DatagramSocket(10002);

new Thread(new Send(sendSocket)).start();
new Thread(new Rece(receSocket)).start();

}

}

class Send implements Runnable{

private DatagramSocket ds;

public  Send(DatagramSocket ds){
this.ds = ds;
}

public void run() {
try{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=buf.readLine())!=null){
if("886".endsWith(line))
break;

byte[] b = line.getBytes();

DatagramPacket dp = 
new DatagramPacket(b,b.length,InetAddress.getByName("115.156.155.255"),10002);

ds.send(dp);

}
}catch(Exception e){
throw new RuntimeException("发送失败");
}

}

}

class Rece implements Runnable{

private DatagramSocket ds;

public Rece(DatagramSocket ds){
this.ds = ds;
}

public void run() {
try{
while(true){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);

ds.receive(dp);

String ip = dp.getAddress().getHostAddress();

String data = new String(dp.getData(),0,dp.getLength());

System.out.println(ip+"::"+data);

}

}catch(Exception e){
throw new RuntimeException("接收失败");
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: