分别总结Java语言UDP数据报网络通信程序的发送端与接收端的核心代码并解释每条语句及参数的含义。
时间: 2024-02-27 18:58:45 浏览: 154
基于UDP协议的数据包收发程序(代码+报告)Java
5星 · 资源好评率100%
Java语言UDP数据报网络通信程序的发送端和接收端的核心代码如下:
发送端:
```java
import java.net.*;
public class UDPSender {
public static void main(String[] args) throws Exception {
// 创建UDP套接字
DatagramSocket socket = new DatagramSocket();
// 目标地址和端口
InetAddress destAddr = InetAddress.getByName("127.0.0.1");
int destPort = 8080;
// 发送数据
String message = "Hello, UDP!";
byte[] data = message.getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, destAddr, destPort);
socket.send(packet);
// 关闭套接字
socket.close();
}
}
```
接收端:
```java
import java.net.*;
public class UDPReceiver {
public static void main(String[] args) throws Exception {
// 创建UDP套接字
DatagramSocket socket = new DatagramSocket(8080);
// 接收数据
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
// 打印接收到的数据
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println("Received data from " + packet.getAddress() + ":" + packet.getPort() + " - " + message);
// 关闭套接字
socket.close();
}
}
```
这里是对代码的解释:
发送端:
1. `import java.net.*`:导入Java标准库中的`java.net`包。
2. `DatagramSocket socket = new DatagramSocket()`:创建UDP套接字,返回的`socket`对象可以用来发送和接收数据。
3. `InetAddress destAddr = InetAddress.getByName("127.0.0.1")`:目标地址,使用`getByName()`方法将字符串类型的IP地址转换为`InetAddress`对象。
4. `int destPort = 8080`:目标端口。
5. `String message = "Hello, UDP!"`:待发送的数据。
6. `byte[] data = message.getBytes()`:将字符串编码为字节数组。
7. `DatagramPacket packet = new DatagramPacket(data, data.length, destAddr, destPort)`:创建数据报文,用于发送数据,`data`表示待发送的数据,`data.length`表示数据的长度,`destAddr`表示目标地址,`destPort`表示目标端口。
8. `socket.send(packet)`:发送数据,使用`send()`方法将数据报文发送到目标地址和端口。
9. `socket.close()`:关闭套接字。
接收端:
1. `import java.net.*`:同上。
2. `DatagramSocket socket = new DatagramSocket(8080)`:创建UDP套接字并指定本地端口,以便接收数据。
3. `byte[] buffer = new byte[1024]`:创建缓冲区,用于接收数据。
4. `DatagramPacket packet = new DatagramPacket(buffer, buffer.length)`:创建数据报文,用于接收数据,`buffer`表示接收数据的缓冲区,`buffer.length`表示缓冲区的长度。
5. `socket.receive(packet)`:接收数据,使用`receive()`方法将数据报文从网络中接收到缓冲区中。
6. `String message = new String(packet.getData(), 0, packet.getLength())`:将接收到的字节数组解码为字符串,`packet.getData()`表示获取数据报文中的数据,`0`表示数据的起始位置,`packet.getLength()`表示数据的长度。
7. `System.out.println("Received data from " + packet.getAddress() + ":" + packet.getPort() + " - " + message)`:打印接收到的数据和发送方的地址和端口。
8. `socket.close()`:关闭套接字。
阅读全文