前言:
上节课逃课了做的简单笔记复习见: 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服务端会出现回复上一个客户端的信息