1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python udp通信_Python网络编程(三)

python udp通信_Python网络编程(三)

时间:2023-09-12 03:31:09

相关推荐

python udp通信_Python网络编程(三)

回顾

在《Python进阶记录之网络编程(二)》中,我们介绍了UDP端口号的基本概念和作用以及Python中UDP服务端的端口绑定和简单创建。今天我们利用UDP server和UDP client实现简单的点对点聊天。

在之前的内容中,我们一直借助sokit网络通信调试助手来测试我们编写的UDP server或UDP client的通信能力,实际上,我们可以分别编写一个UDP server和一个UDP client,让服务端和客户端互相之间进行网络通信。

实现UDP server

我们使用socket模块的socket( )方法创建一个socket对象,由于是基于UDP协议的,所以我们传入类型Type为SOCK_DGRAM。通过上一节的内容,我们知道,服务端的端口必须是唯一的,因此我们需要通过调用socket对象的bind( )方法来指定服务端的端口号。

UDP server代码

我们不固定ip,指定端口号为“12345”,这与之前我们实现过的UDP server基本保持一致。为了可以一直收发消息,我们使用while循环。这里我们指定服务端首先接收客户端的消息,因此,我们需要首先接收数据。我们已经知道,recvfrom( )方法返回一个元组,包括数据内容与发送方的地址信息,我们用data和address进行接收。为了使程序能够正常终止,我们规定,当接收到“88”的信息时,服务端程序终止。接收到客户端发来的消息后,可以调用sendto( )方法发送消息给客户端。

实现UDP client

与UDP server一样,要创建一个UDP client,我们仍然需要使用socket模块的socket( )方法创建一个socket对象。由于要实现与我们刚刚创建的UDP服务端通信,因此设置要发送的地址需要指定端口号“12345”,与我们创建的UDP服务端端口号保持一致。服务端没有指定ip,这里ip地址可以随意设置。

UDP client代码

同样地,我们使用while循环来保证UDP client可以一直收发消息。前面提到,我们指定服务端首先接收客户端的消息,所以客户端就需要首先发送消息。当发送的消息为“88”时,客户端程序终止,同时服务端接收到“88”消息后也终止,保证了两个程序的正常终止。

运行程序

由于UDP是一种无连接的传输层协议,因此我们可以先运行服务端程序,也可以先运行客户端程序。当UDP server和UDP client都成功运行后,两者之间就可以进行通信了。我们的程序中指定由客户端首先发送消息,服务端接收消息后继续发送消息,直至客户端发送消息“88”后两个程序终止,程序运行结束。

UDP server运行结果如下所示。

UDP server运行结果

UDP client运行结果如下所示。

UDP server运行结果

至此,我们使用一个UDP server和一个UDP client实现了简单的点对点聊天。当前的聊天模式只能发送一句,接收一句,如果要实现随机收发消息,可以利用多进程和多线程的知识,将发消息和收消息分别使用一个进程来保证收发消息互不影响。

总结

以上内容介绍了如何利用UDP服务端和客户端实现一个简单的点对点聊天。UDP的特点就是无连接、不可靠。UDP传输数据之前源端和终端不需要建立连接,当它想发送消息时会尽可能快地把它扔到网络上进行发送。因此对于不要求可靠到达的数据时,我们就可以使用UDP协议。感谢大家的支持与关注,欢迎一起学习交流~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。