public class AskServer {
public static void main(String[] args) {
try {
//1.创建一个接收数据包的套接字对象并绑定一个指定的端口
DatagramSocket ds = new DatagramSocket(7788);
//2.创建一个接收数据的字节数组
byte b[] = new byte[1024];
//3.创建一个接收数据的数据包
DatagramPacket dp = new DatagramPacket(b, b.length);
//4.开始接收数据
ds.receive(dp);
//5.对数据进行解析处理
String str = new String(dp.getData(), 0, dp.getLength());
System.out.println("客户端说:"+str);
//响应客户端
String reply = "您好,我在的亲,有什么问题";
SocketAddress sa = dp.getSocketAddress(); //可以得到客户端的IP地址
//创建一个响应的数据包
DatagramPacket dp2 = new DatagramPacket(reply.getBytes(), reply.getBytes().length, sa);
ds.send(dp2); //响应数据
//6.释放资源
ds.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class AskClient {
public static void main(String[] args) {
try {
//1.准备要发送的数据,以及发送主机的IP地址和端口号
String mess = "您好,在吗?我想咨询一个问题";
byte[] b =mess.getBytes();
//得一指定主机的IP地址的对象
InetAddress ia = InetAddress.getByName("localhost");
int port = 7788;
//2.创建一个发送数据的数据包
DatagramPacket dp = new DatagramPacket(b, b.length, ia, port);
//3.创建一个发送数据包的套接字对象
DatagramSocket ds = new DatagramSocket();
//4.发送数据包
ds.send(dp);
//接收服务器端的响应
byte[] by = new byte[1024];
//创建一个接收包
DatagramPacket dp2 = new DatagramPacket(by, by.length);
//开始接收响应
ds.receive(dp2);
String reply = new String(dp2.getData(), 0, dp2.getLength());
System.out.println("服务器端说:"+reply);
//5.释放资源
ds.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}