效果如下
- 服务端:
- 客户端:
具体实现代码:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class UdpServer {
public static void main(String[] args) {
System.out.println("服务端启动...");
DatagramSocket socket = null;
DatagramPacket packet = null;
Scanner sc = new Scanner(System.in);
byte[] buff = new byte[1024];
try {
socket = new DatagramSocket(7777);
packet = new DatagramPacket(buff, buff.length);
while(true) {
socket.receive(packet);
byte[] buff2 = packet.getData();
String reply = new String(buff2,0,packet.getLength());
if("bye".equals(reply)) {
break;
}
InetAddress address = packet.getAddress();
System.out.println("客户:"+reply);
System.out.println("我:");
String info = sc.nextLine();
byte[] bytes = info.getBytes();
DatagramPacket packet2 = new DatagramPacket(bytes,bytes.length,address,packet.getPort());
socket.send(packet2);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
socket.close();
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class UdpClient {
public static void main(String[] args) {
DatagramSocket socket = null;
DatagramPacket packet = null;
Scanner sc = new Scanner(System.in);
try {
socket = new DatagramSocket();
while(true) {
System.out.println("我:");
String cInfo = sc.nextLine();
byte[] buff = cInfo.getBytes();
packet = new DatagramPacket(buff, buff.length, InetAddress.getByName("127.0.0.1"), 7777);
socket.send(packet);
if(cInfo.equals("bye")) {
break;
}
byte[] buff2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(buff2, buff2.length);
socket.receive(packet2);
byte[] data = packet2.getData();
System.out.println("在线客服说:"+new String(data,0,packet2.getLength()));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(socket!=null) {
socket.close();
}
}
}
}