socket实现udp协议 Python实现UDP客户和服务器通信
前言
前文使用TCP面向流的套接字,今天讲解的UDP的工作方式与TCP/IP不同。UDP是用户数据报协议,是一个面向消息的协议。
一方面,UDP不需要一个长期活动连接,所以建立UDP套接字稍微简单一些。另一方面,UDP消息必须放在一个数据报中。
在IPv4中,数据报包含65507个字节,这些字节信息中还包括首部信息。因为UDP不需要长期的连接,所以它无法得到TCP所能提供的传输保障。
服务器代码因为UDP并没有连接,所以服务器不需要监听和接收连接。它只需要使用bing()将其套接字与一个端口关联,然后等待各个消息。
示例代码如下:
import socket# 1.创建一个套接字,sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.bind(('localhost', 10000))while True: data, address = sock.recvfrom(4096) print(data.decode('UTF-8'), address) if data: sent = sock.sendto('已接收到你发来的消息'.encode('UTF-8'), address)
其中,recvfrom()表示从套接字读取消息,比如客户但发送消息后,消息与客户但地址都在里面。
至于sendto()很好理解,就是发送消息给别人。参数1表示消息内容,参数2就是发送到哪里(也就是对方的地址)。
客户端代码客户端当然比服务器更简单,因为UDP不需要连接,可以直接将消息发送到服务器,并使用recvfrom()响应。示例如下:
import socketsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try: msg = "发送消息到服务器".encode('utf-8') sent = sock.sendto(msg, ('localhost', 10000)) data, server = sock.recvfrom(4096) print(data.decode())finally: sock.close()
同样的,这里sock.recvfrom()用于接收服务器反馈的消息内容与地址。运行之后,效果如下所示:
- 01-27豹女什么时候可以二级反野?武器豹女统御上野8.24全位置英雄推荐
- 02-04澳洲肺炎初期,新型肺炎感染第5例确认
- 10-17增加群活跃度的方法:三分钟快速点亮群活跃等级图标
- 05-08阳光校园空中黔课初三年级课程表:阳光校园,空中黔课下周全面开播
- 01-14买高层的住宅还是低层的住宅好 购买高层住宅到底应该选哪一层
- 11-26广东盆菜哪家最正宗,顺德名厨精心炮制的百年传统盆菜
- 03-10山东最有名的黄面鸡:吃过其中3个的在聊城就算美食家
- 03-31难对的奇葩上联:才女出上联,进进出出
- 04-06马桶清洗喷头如何接热水?热水器有一年以上没清洗就脏过马桶
- 03-07剪映教程零基础入门教程,剪映基础入门教程
- 04-182022年底,2022年,这2种
- 12-14大色鬼,小色鬼9,大色鬼,小色鬼9
- 04-01冬天泡脚注意事项和禁忌:这七大雷区千万要避开
- 05-24不一样的元宵节一样的坚守和感动:南京高淳,欢度元宵节慰问暖人心
- 04-02恋爱治愈新番推荐:以复仇为名的恋爱头脑战
- 04-02世界上最漂亮的绿皮火车 我坐过最长的绿皮火车是34小时
热门
推荐
- 1流产吃药还是刮宫337
- 2大学综合评议优选285
- 3高中生的学术论文401
- 4好听霸气的女生个性签名121
- 5股东投资(合作)协议(书)范本最新整理版404
- 6读书的手抄报的装饰图279
- 7毕业生简历自我评价5篇311
- 8论宽容高二作文346