理论教育 简易UDP网络编程Java程序设计

简易UDP网络编程Java程序设计

时间:2023-10-18 理论教育 版权反馈
【摘要】:编写一个简单的UDP程序,实现发送端向接收端发送数据。在项目Chapter13的src目录下新建一个名为cn.pzhu.udp的包,在这个包下面创建一个名为Receiver的类,并在类中编写接收端程序,关键代码如下:图13.11UDP通信交互过程程序编写完毕之后,运行程序,运行结果如图13.12所示。图13.12接收端运行结果提示:在UDP通信的时候,需要先运行接收端程序,才能避免发送端发送的数据因为找不到接收端而造成丢失。

简易UDP网络编程Java程序设计

使用UDP进行程序设计的一般过程如下:

(1)接收端准备一个空的数据包,用来准备保存接收的数据。

(2)接收端监听某个端口是否有数据输入。

(3)接收端使用receive()方法等待接收数据。

(4)发送端准备要发送的数据包,并在数据包中写入接收端的IP地址和端口号。

(5)发送端使用send()方法发送数据,并在数据发送完毕之后释放资源。

(6)接收端收到数据并进行处理,在处理完毕之后释放资源。

UDP交互过程如图13.11所示。

【例13.5】编写一个简单的UDP程序,实现发送端向接收端发送数据。

在项目Chapter13的src目录下新建一个名为cn.pzhu.udp的包,在这个包下面创建一个名为Receiver的类,并在类中编写接收端程序,关键代码如下:

图13.11 UDP通信交互过程

程序编写完毕之后,运行程序,运行结果如图13.12所示。

图13.12 接收端运行结果(www.daowen.com)

提示:

在UDP通信的时候,需要先运行接收端程序,才能避免发送端发送的数据因为找不到接收端而造成丢失。

从图13.12可以看出,程序一直处于阻塞状态,这是因为DatagramSocket的receive()方法在运行的时候,如果没有接收到数据将一直等待,直到收到发送端发送数据。

下面,开始编写发送端程序。在cn.pzhu.udp包下创建一个名为Sender的类,并在类中编写发送端程序,关键代码如下:

编写之后,程序运行结果如图13.13所示。

图13.13 发送端运行结果

发送端在创建DatagramSocket时,如果不指定端口,程序将自动分配一个未被占用的端口;但是在创建DatagramPacket的时候,端口号必须要与接收端监听的端口号一致,接收端才能收到数据。

当发送端使用send()方法将数据发送出去之后,接收端会收到发送端发送的数据,并且结束阻塞状态,此时接收端控制台的显示结果如图13.14所示。

图13.14 接收端接收数据之后的运行结果

提示:

运行结果中显示的端口号"58223"是因为在创建DatagramSocket的时候没有指定端口号,因此,在程序运行中,系统将随机分配的一个端口号来发送数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈