编写一个UDP数据报网络程序,分别定义网络通信的两端:ClientA、ClientB。其中,ClinetA中连续向ClientB发送2个数据报,分别为:“你好”、“我是ClinetA”;ClientB分别接收对方发来的2个数据报,并将接收到的内容显示在命令行窗口。
时间: 2024-02-18 14:04:42 浏览: 55
以下是一个简单的Java程序,实现了UDP数据报网络程序,包括ClientA和ClientB两端,其中ClientA向ClientB连续发送两个数据报,ClientB接收并显示接收到的内容:
ClientA端代码:
```java
import java.net.*;
public class ClientA {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket();
// 发送第一个数据报
String message1 = "你好";
InetAddress address = InetAddress.getLocalHost();
int port = 8888;
byte[] buffer1 = message1.getBytes();
DatagramPacket packet1 = new DatagramPacket(buffer1, buffer1.length, address, port);
socket.send(packet1);
// 发送第二个数据报
String message2 = "我是ClientA";
byte[] buffer2 = message2.getBytes();
DatagramPacket packet2 = new DatagramPacket(buffer2, buffer2.length, address, port);
socket.send(packet2);
socket.close();
}
}
```
ClientB端代码:
```java
import java.net.*;
public class ClientB {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(8888);
// 接收第一个数据报
byte[] buffer1 = new byte[1024];
DatagramPacket packet1 = new DatagramPacket(buffer1, buffer1.length);
socket.receive(packet1);
String message1 = new String(packet1.getData(), 0, packet1.getLength());
System.out.println("ClientB接收到第一个数据报:" + message1);
// 接收第二个数据报
byte[] buffer2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(buffer2, buffer2.length);
socket.receive(packet2);
String message2 = new String(packet2.getData(), 0, packet2.getLength());
System.out.println("ClientB接收到第二个数据报:" + message2);
socket.close();
}
}
```
在这个程序中,ClientA使用DatagramSocket对象向ClientB发送两个数据报,分别为“你好”和“我是ClientA”,并将它们打包成DatagramPacket对象,然后通过send()方法发送到ClientB的IP地址和端口号上。
ClientB使用DatagramSocket对象监听端口8888,并通过receive()方法接收ClientA发送来的两个数据报。然后将接收到的数据转换成字符串,并在命令行窗口中显示出来。
注意:在运行这个程序时,需要先运行ClientB端,然后再运行ClientA端,否则会出现“连接被拒绝”的错误。
阅读全文