java中實現udp通信非常簡單,只需要創建DatagramSocket,然後使用DatagramSocket發送DatagramPacket即可。
接收端
30012爲接收端的端口號
public static void main(String[] args) {
try {
DatagramSocket dgSocket = new DatagramSocket(30012);
byte[] by = new byte[1024];
DatagramPacket packet=new DatagramPacket(by,by.length);
while ( ! Thread.currentThread().isInterrupted()){
try {
dgSocket.receive(packet);
String str=new String(packet.getData(),0,packet.getLength());
System.out.println("接收到消息:"+str);
} catch (IOException e) {
e.printStackTrace();
}
}
dgSocket.close();
} catch (SocketException e) {
e.printStackTrace();
}
}
發送端
192.168.1.103爲接收端的主機ip地址,30012爲接收端的端口號
這裏也可以將ip設置爲廣播地址,這樣局域網內所有的主機都會接收到該數據包
public static void main(String[] args) {
try {
DatagramSocket dgSocket = new DatagramSocket();
String msg = "你好,這是我發給你的消息";
DatagramPacket dgPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length,
InetAddress.getByName("192.168.1.103"),30012);
while ( ! Thread.currentThread().isInterrupted()){
dgSocket.send(dgPacket);
System.out.println("發送消息:"+msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
dgSocket.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}