您的位置:首页 > 理论基础 > 计算机网络

网络编程-udp通信

2016-08-14 11:25 399 查看
网络编程-udp通信

package com.it.www;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

class Send implements Runnable{

private DatagramSocket datagramSocket ;
Send(DatagramSocket datagramSocket){
this.datagramSocket = datagramSocket;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {

//创建一个字符输入流
InputStreamReader in = new InputStreamReader(System.in);

//创建一个包装类,把字符流放到缓存中
BufferedReader buff  = new BufferedReader(in);

String line = null;
while((line = buff.readLine()) != null)
{
if("885".equals(line))
break;

byte[] dataLine = line.getBytes();// 字符串数据转化为字节数据

DatagramPacket datagramPacket =
new DatagramPacket(dataLine, dataLine.length, InetAddress.getByName("127.0.0.1"), 10001);
datagramSocket.send(datagramPacket);
}
datagramSocket.close();

} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException("发送端失败");
}
}

}

class Receive implements Runnable{

DatagramSocket datagramSocket ;
public Receive(DatagramSocket datagramSocket) {
// TODO Auto-generated constructor stub
this.datagramSocket = datagramSocket;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {

while(true)
{
byte[] data = new byte[1024];

//声明一个字节包,用来存放接收对方的数据
DatagramPacket datagramPacket =
new DatagramPacket(data, data.length);

//通古socket服务将收到的数据存到数据包中
datagramSocket.receive(datagramPacket);

//获取对方的主机地址
System.out.println(datagramPacket.getAddress().getHostAddress());

//获取对方发送的数据
String dataString =
new String(datagramPacket.getData(),0,datagramPacket.getLength());
System.out.println("dataString ="+dataString);
}

} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException("接收失败");
}
}

}

public class UdpCommunicate{

public static void main(String[] args) throws Exception {
DatagramSocket sendDatagramSocket = new DatagramSocket();
DatagramSocket receivedDatagramSocket = new DatagramSocket(10001);

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