前言:
上节课逃课了做的简单笔记复习见: http://t.csdn.cn/5zbB6 这节课打算逃课,被我们的可爱的琪琪拦下了
目录 (目录没搞好将就一下下啦)
- UDP
- 小案例 : CMD
- 黏包
- 解决黏包方法:
一.1.1 UDP
老套路了,还是详情见 : UDP_百度百科
协议:
-
udp协议:
优点 : 接收时候数据之间有边界,传输速度快,不黏包
缺点 : 限制数据包的大小(受带宽路由器等因素影响),传输不稳定,可能丢包
话不多说直接上
#服务端
import socket
# 1.创建udp对象
sk = socket.socket(type=socket.SOCK_DGRAM)
# 2.绑定地址和端口
sk.bind(("127.0.0.1", 9000))
while True:
# 3.udp服务器,在一开始只能够接收数据?
msg, cli_addr = sk.recvfrom(1024)
print(msg.decode('utf-8'))
print(cli_addr)
# 发送消息
msg1 = input("服务端给客户端发送的消息是?:")
sk.sendto(msg1.encode('utf-8'), cli_addr)
# 4.关闭连接
sk.close()
#客户端
import socket
# 1. 创建udp对象
cl = socket.socket(type=socket.SOCK_DGRAM)
while 1:
# 2.发送数据 sendto(消息,(ip+port))
msg = input("客户端给服务端发送消息是?:")
cl.sendto(msg.encode('utf-8'), ("127.0.0.1", 9000))
# 接收消息
msg1, server_addr = cl.recvfrom(1024)
print(msg1.decode('utf-8'))
print(server_addr)
# 3.关闭连接
cl.close()
#客户端1
import socket
# 1. 创建udp对象
cl = socket.socket(type=socket.SOCK_DGRAM)
while 1:
# 2.发送数据 sendto(消息,(ip+port))
msg = input("客户端给服务端发送消息是?:")
cl.sendto(msg.encode('utf-8'), ("127.0.0.1", 9000))
# 接收消息
msg1, server_addr = cl.recvfrom(1024)
print(msg1.decode('utf-8'))
print(server_addr)
# 3.关闭连接
cl.close()
注意,这里如果加一个客户端的话会有什么现象.
答:如果以上内容加一个客户端1服务端会出现回复上一个客户端的信息
例:
这里客户端给服务端发送一个1 ,则服

本文主要介绍了UDP协议的特点,如数据之间的边界明确、传输速度快但可能存在丢包问题。同时,探讨了UDP黏包的现象及其原因,分析了在发送端和接收端可能出现黏包的情况。还提到了在实时通讯中解决黏包的方法,如设定固定消息长度或使用时间间隔。
最低0.47元/天 解锁文章
1202

被折叠的 条评论
为什么被折叠?



