要求
UDP发送数据: 数据来源于键盘记录,直至输入的数据是886,发送数据结束
UDP接收数据: 因为接收端不知道发送端什么时候停止发送,故意采用死循环接收
代码示例
发送端
public class SendDemo {
public static void main(String[] args) throws IOException {
//创建发送端对象
DatagramSocket ds =new DatagramSocket();
//自己封装键盘录入数据
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line= br.readLine())!=null){
//输入的是886,发送数据结束
if ("886".equals(line)){
break;
}
//创建数据并打包
byte [] bys=line.getBytes();
DatagramPacket dp=new DatagramPacket(bys, bys.length, InetAddress.getByName("192.168.40.1"),12345);
//调用DatagramSocket的方法发送数据
ds.send(dp);
}
//关闭发送端
ds.close();
}
}
接收端
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
//创建接收端对象
DatagramSocket ds = new DatagramSocket(12345);
while (true) {
//创建一个数据包用于接收数据
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
//调用DatagramSocket方法接收数据
ds.receive(dp);
//解析数组报包
System.out.println("数据时:" + new String(dp.getData(), 0, dp.getLength()));
}
//关闭接收端
//ds.close();
}
}