本文已参与「新人创作礼」活动,一起开启掘金创作之路
声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!
文章目录
通过上篇文章了解了基于UDP通信的理论、基本步骤以及它跟TCP的区别,大家如需了解可参考 java网络编程:11、基于UDP的socket编程(一)理论、基本步骤 - 掘金 (juejin.cn) 这篇写一个简单的实例来感受一下!
一、基于UDP服务器端程序的编写
/**
* 基于UDP服务器端程序的编写
*/
public static void recv() {
try {
//创建数据报套接字对象,绑定端口号为6000
DatagramSocket ds = new DatagramSocket(6000);
//构建数据包接收数据:
//创建字节数组
byte[] buf = new byte[100];
//创建数据包对象,它的长度不能超过数组的长度,我们把它设为100
DatagramPacket dp = new DatagramPacket(buf, 100);
//接收数据
ds.receive(dp);
//打印数据
//getLength方法返回实际接收数;getData方法返回数据,返回格式为字节数组
System.out.println(new String(buf, 0, dp.getLength()));
//关闭数据报套接字
ds.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
二、基于UDP客户端程序的编写
/**
* 基于UDP客户端程序的编写
*/
public static void send() {
try {
//创建一个数据报对象。
DatagramSocket ds = new DatagramSocket();
//要发送的数据
String str = "Hello,this is zhangsan";
//构造一个发送数据包:
//InetAddress.getByName("localhost"):获得本地ip地址
//端口号指定为6000
DatagramPacket dp = new DatagramPacket(
str.getBytes(),
str.length(),
InetAddress.getByName("localhost"),
6000);
//发送数据包
ds.send(dp);
//关闭数据报套接字
ds.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
三、测试打印
我们先启动recv接收端,然后再启动send发送端,那么我们可以看到接收端收到了信息,如下图:
那么对于这个recv接收端来说,它能不能够给我们send发送端,回一个信息呢?
详见下篇文章