网络编程之基于UDP协议的socket套接字编程

基于UDP的套接字

  • udp是无链接的,先启动哪一端都不会报错

【1】方法简介

(1)UDP服务端

server = socket() #创建一个服务器的套接字
server.bind() #绑定服务器套接字
inf_loop: #服务器无限循环
conn = server.recvfrom()/conn.sendto() # 对话(接收与发送)
server.close() # 关闭服务器套接字

(2)UDP客户端

client = socket() # 创建客户套接字
comm_loop: # 通讯循环
client.sendto()/client.recvfrom() # 对话(发送/接收)
client.close() # 关闭客户套接字

【2】示例模版

  • client
import socket
# 创建链接对象
client = socket.socket(type=socket.SOCK_DGRAM)
IP = '127.0.0.1'
PORT = 9696
# 发送数据
msg = '我是客户端'
msg = msg.encode('utf8')
client.sendto(msg, (IP, PORT))
# 接收数据
msg, addr = client.recvfrom(1024)
print(msg.decode('utf8'))
print(addr)
  • server
import socket
# 创建服务端对象
server = socket.socket(type=socket.SOCK_DGRAM)
# 监听IP和PORT
IP = '127.0.0.1'
PORT = 9696
server.bind((IP, PORT))
# 接收信息
msg, addr = server.recvfrom(1024)
print(msg.decode('utf8'))
print(addr)
# 发送信息
data = '我是服务端'
data = data.encode('utf8')
server.sendto(data, addr)

空数据的处理

  • TCP协议是水流式协议:传入的数据不能为空,因为水是一直流的,在传输过程中不会对数据进行操作
  • UDP协议是数据报协议:传入的数据可为空,在传输过程中UDP会对数据进行内部的拼接和处理

断开链接的影响

  • TCP协议是水流式协议:在建立链接过程中,服务端和客户端的链接是一直存在的,断开一方都会对另一方造成影响
  • UDP协议是数据报协议:在建立链接过程中,是通过解析对方数据中的ip和端口,再向另一方返回数据的,所以一方发生问题并不会影响到另一方
posted @   Xiao0101  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示

目录