- 案例需求
UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束;
UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收。 - 代码实现
UDP接收数据:
package test2;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
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);
ds.receive(dp);
System.out.println("数据是:"+new String(dp.getData(),0,dp.getLength()));
}
// ds.close();
}
}
UDP发送数据:
package test2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class sendDEMO {
public static void main(String[] args) throws IOException {
DatagramSocket ds=new DatagramSocket();
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line=bf.readLine())!=null){
if("886".equals(line)){
break;
}
byte [] bys=line.getBytes();
DatagramPacket dp=new DatagramPacket(bys,bys.length, InetAddress.getByName("192.168.30.67"),12345);
ds.send(dp);
}
ds.close();
}
}
- 运行结果