文章目录
在UDP实现消息的发送的过程中,是没有客户端和服务器端的说法的,
就是说,单独一台机器就可以实现功能,
但是在实现的过程中,为了能更好的了解过程,
会模拟出客户端和服务端,客户端用于发送数据,而服务器端则是接受数据
客户端的步骤
1.建立一个Socket
2.建个数据包
3. 发送数据包
4.关闭资源
服务器端
1 开启端口,准备接受数据
2.接受相应的数据包
3. 对数据包中的数据进行处理
4. 关闭资源
Java代码实现
客户端:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* @description:UDP聊天的模拟客户端
* @return
*/
public class ClientUDP {
public static void main(String[] args) throws Exception {
//1.建立一个Socket
DatagramSocket socket = new DatagramSocket();
//2.建个包
//2.1 数据,地址和端口
String msg = "测试数据";
InetAddress ipC = InetAddress.getByName("127.0.0.1");
int port = 8088;
//2.2 要数据的大小和目的地
DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, ipC, port);
//3. 发送包
socket.send(datagramPacket);
//4.关闭资源
socket.close();
}
}
服务器端:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/**
* @description:UDP聊天的模拟服务器端
* @return
*/
public class ServerUDP {
public static void main(String[] args) throws Exception {
//1 开启端口
DatagramSocket socket = new DatagramSocket(8088);
//2接受数据包
byte[] bytes = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length);
//接受数据,持续接受数据
socket.receive(datagramPacket);
System.out.println(datagramPacket.getAddress().getHostAddress());//获取接受到的数据的地址
System.out.println(new String(datagramPacket.getData(),0,datagramPacket.getLength()));//打印获取到的内容
//3. 关闭资源
socket.close();
}
}
运行结果: