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()用于接收服务器反馈的消息内容与地址。运行之后,效果如下所示:
- 10-10高情商聊天反面教材:趣味聊天很重要
- 05-24乡村风流韵事,71,乡村风流韵事,71
- 01-10天地八阳神咒是伪经:天地八阳神咒经是伪经
- 06-06大秧歌王天凯由谁扮演的 太阳出来月亮回家了吗
- 04-27河南印花税零申报最新申报流程:别说没提醒大家看完这篇省大事
- 10-06电销话术开场白的三要素:这4种电销开场白的话术
- 05-20夜读决定结局:夜读,能删掉的人或许已经不重要
- 12-29手抄报的空白地方可以画什么?办手抄报画人物不会入手
- 04-18老师穿着太清凉引家长不满:很温馨郑州一小学老师穿着
- 05-21暴食对体脂率的影响:研究揭示节食后体脂反弹和肥胖的机制及营养干预策略
- 12-10s30新赛季白起的出装和铭文 白起成为新手打野玩家福音
- 01-14学校与老师的暖心瞬间:班上同学和老师的感人拥抱
- 11-23拍照效果比诺基亚808好的手机:10年前的手机拍照算什么水平
- 03-24手麻属于脑梗前期吗?手麻就是脑梗吗,不见得
- 04-25mac重启访达:如何让,Mac访达
- 06-07iphonex系列买什么好?八仙过海各显神通最强iPhone
热门
推荐
- 1保险公司表彰决定范文3篇261
- 2上海中考现代文阅读习题及答案229
- 3在儿童节那天英语翻译447
- 4重阳节有哪些民间风俗220
- 5文明祭祀倡议书精选范文318
- 6花城版七年级下册音乐教学计划369
- 7如何判断电势高低口诀是什么123
- 8会计主管工作总结332