发送端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPSenderDemo {
public static void main(String[] args) throws Exception {
//1.建立一个Socket
DatagramSocket socket = new DatagramSocket();
//2.准备数据包
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while(true){
String msg = reader.readLine();
byte[] data = msg.getBytes();
//ip+port
InetAddress ip = InetAddress.getByName("localhost");
int port = 9000;
//数据,数据的起始位置,ip,port
DatagramPacket packet = new DatagramPacket(data, 0, data.length, ip, port);
//3.发送包
socket.send(packet);
//结束
if(msg.equals("bye"))
break;
}
//4.关闭socket
socket.close();
}
}
接收端
import java.net.DatagramPacket;
import java.net.DatagramSocket;
//还是要等待客户端的链接!
public class UDPReceiverDemo {
public static void main(String[] args) throws Exception {
//开放端口
DatagramSocket socket = new DatagramSocket(9000);
while(true){
//接收数据包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);//接收
//阻塞式接收包
socket.receive(packet);
String receivedata = new String(packet.getData(), 0, packet.getLength());
System.out.println(receivedata);
//结束
if(receivedata.equals("bye"))
break;
}
//关闭socket
socket.close();
}
}
实现双方都可以是发送端和接收端,需要利用多线程