发送端代码如下
public static void main(String[] args) throws Exception {
// 创建socket对象,并绑定到本地主机任意可以用的端口
DatagramSocket socket = new DatagramSocket();
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 循环录入数据
while(true) {
// 获取键盘数据
String line = sc.nextLine();
if("quit".equals(line)) {
break;
}
// 创建数据报包对象:用来发送数据
DatagramPacket packet = new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
// 发送数据报
socket.send(packet);
}
// 关闭流
socket.close();
}
接受端代码如下
public static void main(String[] args) throws Exception {
// 创建socket对象,绑定到本地主机6666端口
DatagramSocket socket = new DatagramSocket(6666);
// 创建数据报包对象,用来接受数据报
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
while(true) {
socket.receive(packet); // 接受数据报包,填充到packet
int len = packet.getLength(); // 获取有效字节个数
String ip = packet.getAddress().getHostAddress(); // 获取ip地址
int port = packet.getPort(); //获取端口号
byte[] arr = packet.getData();
System.out.println(ip + ":"+ port + ":" + new String(arr, 0, len));
}
}
运行结果如下