千家信息网

Python网络编程UDP协议分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"Python网络编程UDP协议分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python网络编程UDP协议分析"吧!UDP协议
千家信息网最后更新 2026年11月01日Python网络编程UDP协议分析

这篇文章主要讲解了"Python网络编程UDP协议分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python网络编程UDP协议分析"吧!

UDP协议概述

  • UDP协议--User Datagram Protocol,即用户数据包协议,UDP协议是无连接、不可靠、高效率数据传输协议。

  • UDP协议优点:开销小、速度快、无连接。

  • UDP协议缺点:无确认重传和排序、无流控制、无错误恢复。

  • UDP协议是面向报文的传输协议,它对报文既不拆分也不合并,而是给报文添加头部后就向下交给IP层。发现错误时不要重传,只是简单地把错误的报文扔掉、或给应用程序提供警告。

  • UDP协议广泛运用在强调数据传输速率的多媒体应用领域,例如网络聊天、在线视频、网络游戏、实时监控、路由协议中修改路由表等。

    • TCP协议遇到丢包或错误时要求重传,因而导致传输速率大幅降低。

    • UDP协议遇到丢包或错误时不要求重传,因为一个报文丢失后几秒内会有新的报文替代它,所以UDP协议传输速率比TCP协议高很多。

    • 应用程序需要根据需要自定义应用层协议来处理报文丢失、错误、失序的情况。

  • 编写UDP应用程序需要审慎考虑合适的报文长度:

    • 局域网最大传输单元(Maximum Transmission Unit,MTU)默认是1500字节。

    • UDP协议头部是8字节、IP层协议头部是20字节。

    • 单条报文建议长度是1024字节,最大长度不得超过65507字节(报文加头部总长不得超过65535字节)。

    • 网络环境较好时报文长度及接收缓存建议设大一些,可以减少报文接收不及时导致丢包的概率。

udp协议服务端

  1. 创建socket实例。

    sk = socket.socket(type=socket.SOCK_DGRAM)


    注意:type=socket.SOCK_DGRAM是指定关键字参数,不能"缺省type=",该参数用来指定使用udp协议。

  2. 绑定ip和端口。

    sk.bind(('127.0.0.1',9001))


    说明:该方法有一个参数,类型是元组(元组的第一个元素是IP,第二个元素是端口)。无返回值。

  3. 从UDP客户端收报文。

    message,addrress = sk.recvfrom(1024)


    说明:该方法参数是接收消息长度。返回值是元组,元组第一项是消息,第二项是ip及端口。

  4. 发送报文给UDP客户端。

    sk.sendto(message,address)


    说明:该方法有二个参数,第一个参数是要发送的消息,必须是bytes型;第二个参数是元组(元组的第一个元素是IP,第二个元素是端口)。返回值是发送的字节数。

udp协议客户端

  1. 创建socket实例。

    sk = socket.socket()


  2. 发报文给UDP服务端。

    sk.sendto(message.encode(),('127.0.0.1',9001))


    说明:该方法有二个参数,第一个参数是要发送的消息,必须是bytes型;第二个参数是元组(元组的第一个元素是IP,第二个元素是端口)。返回值是发送的字节数。

  3. 从UDP服务端收报文。

    message = sk.recv(1024).decode()


    说明:该方法参数是接收消息长度。返回值是消息。

案例:udp协议聊天室

  • 服务端

    import socketHOST = '127.0.0.1'  # IP地址PORT = 50007  # 端口max_connect = 5def main():accounts = {               }with socket.socket(type=socket.SOCK_DGRAM) as sk:sk.bind((HOST, PORT))while True:msg, address = sk.recvfrom(1024)rev = msg.decode().split('|||')accounts[rev[0]] = addressif rev[1] in accounts:sk.sendto(msg, accounts[rev[1]])if __name__ == "__main__":main()


    说明:这个是UDP协议简易聊天室服务端模型,服务端接收到客户端发来的消息,会记录客户端的ip和端口以及账号,并更新到字典中。遇到发往目标账户的消息在字典中时,会将信息转发给目标账户,从而实现多人聊天功能。
    注意:代码目前没有缓存消息,当要发送的目标不在线时,该消息会被丢弃。

  • 客户端

    import socketfrom threading import Threadimport sysHOST = '127.0.0.1'  # IP地址PORT = 50007  # 端口class Transceiver:def __init__(self, conn, server, account: str, target: str, buffer: int = 1024) -> None:self.conn = conn  # socket实例self.server = server  # 目标ip及端口self.buffer = buffer  # 缓存区大小self.path = (account + '|||' + target + '|||').encode()  # 己方账号def send(self, message: str) -> None:"""发送消息"""if type(message) is str:  # 判断消息类型message = message.encode()  # 将消息转成bytes型,缺省参数是utf8编码self.conn.sendto(self.path + message, self.server)  # 发送消息def recv(self):"""接收消息"""message, _ = self.conn.recvfrom(self.buffer)message = message.decode('utf8').split('|||')return message[1], message[2]  # 返回消息字符串def main():def send(m, message):m.send(message)def recv(m):while True:try:source, data = m.recv()print(f'收到"{source}"发来的信息:{data}')except:passwith socket.socket(type=socket.SOCK_DGRAM) as sk:account = input("请输入你的账号:")target = input("请输入你想聊天的账号:")m = Transceiver(sk, (HOST, PORT), account, target)t = Thread(target=recv, args=(m,))t.setDaemon(True)t.start()while True:message = input('请输入你要发送的信息:')if not message:continueif message == 'q' or message == 'Q':sys.exit(0)Thread(target=send, args=(m, message)).start()if __name__ == "__main__":main()


    说明:这个是udp协议简易聊天室客户端模型,客户端登录时首先输入自己的账号和对方的账号,然后进入循环,循环输入发给对方账号的消息,另开了子收获进程接受服务端转发来的消息。

感谢各位的阅读,以上就是"Python网络编程UDP协议分析"的内容了,经过本文的学习后,相信大家对Python网络编程UDP协议分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

消息 报文 参数 端口 字节 网络 客户 账号 服务 元素 客户端 错误 长度 传输 方法 应用 输入 网络编程 分析 编程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网加科技 互联网科技巨头监管 互联网科技保险 菲比寻常互联网科技 互联网科技素材视频竖屏 成都玖崟互联网科技有限公司乐商圈怎么样 玖二柒互联网科技公司待遇 须眉科技是互联网公司吗 互联网教育科技公司vipkid 随着互联网科技发展 福建科技产业互联网发展 花神(南京)互联网科技有限公司 宜昌元轩互联网科技有限公司 民营互联网公司国防科技 滨湖区互联网智能科技产品有哪些 互联网科技包装股份有限公司上市 易企秀互联网科技是做什么的 河南商务圈互联网科技有限公司 科技发展第三阶段互联网时代 云之行互联网科技 万易互联网科技 互联网金融科技创新 华中科技大学互联网 沃里互联网科技 掌上梦互联网科技 互联网金融监管科技 贵州叶脉互联网科技有限公司所属行业 互联网科技快讯热点 唯美互联网科技
0