网站首页 > 技术文章 正文
前言
前文使用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 socket
sock = 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()用于接收服务器反馈的消息内容与地址。运行之后,效果如下所示:
猜你喜欢
- 2025-06-13 ScalersTalk 成长会 Python 小组第 9 周学习笔记
- 2025-06-13 Python开发爬虫的常用技术架构(python常用爬虫模块)
- 2025-06-13 python yield -- 生成器(python3 生成器)
- 2025-06-13 Python开发必备:自定义JSON编码器完全指南
- 2025-06-13 [868]ScalersTalk成长会Python小组第16周学习笔记
- 2025-06-13 基于 Python 的 PLC 监控系统深度开发
- 2025-06-13 用Python演示ARP攻击的过程及应对办法
- 2025-06-13 Python语言有哪些特点 怎么能学好Scrapy框架
- 2025-06-13 蓝桥杯备考冲刺必刷题(Python) | 143 饮料换购
- 2025-06-13 轻松转换:Python程序将文本转为摩尔斯电码
- 266℃Python短文,Python中的嵌套条件语句(六)
- 265℃python笔记:for循环嵌套。end=""的作用,图形打印
- 264℃PythonNet:实现Python与.Net代码相互调用!
- 259℃Python实现字符串小写转大写并写入文件
- 258℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 118℃原来2025是完美的平方年,一起探索六种平方的算吧
- 98℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 92℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python中怎么给属性增加类型检查或合法性验证?
- 如何把python绘制的动态图形保存为gif文件或视频
- Python XOR异或 操作(python异或函数)
- 每天学点Python知识:使用制表符或换行符来添加空白
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
- python之类的定义和对象创建篇(如何在python中定义一个属于对象的数据成员?)
- Python函数调用常见的8个错误及解决方案
- Python学不会来打我(30)python模块与包详解
- 《防秃指南:Python高频考点串烧(附翻车现场实录)》
- Python 面向对象:掌握类的继承与组合,让你的代码更高效!
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)