udp协议
称之为数据包协议,不需要建立连接,不需要知道对方是否收到,无需先启动服务端在启动客户端。
缺点
- 数据不安全,容易丢失
优点
- 传输速度快
- 能支持并发
- 不会粘包
应用场景:早期的QQ聊天室
# 服务端
import socket
# socket.SOCK_DGRAM---> UDP协议
server = socket.socket(type=socket.SOCK_DGRAM)
# 服务端需要绑定一个地址,让别人知道你在哪里
server.bind(('localhost', 9527))
while True:
# 发送数据给服务端的用户地址
# 因此此处接收的是来自客户端的消息和地址
data, addr = server.recvfrom(1024)
print(addr)
print(data.decode('utf-8'))
mes = input('>>>').strip()
# 无论服务端还是客户端,发送消息时,都必须知道对方是谁
server.sendto(mes.encode('utf-8'), addr)
# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
# 此处的ip和端口号是服务的端的IP和端口号
address = ('localhost', 9527)
while True:
data = input('>>>').strip()
client.sendto(data.encode('utf-8'), address)
# 接收服务端的数据
data, addr = client.recvfrom(1024)
print(data.decode('utf-8'))
TCP/UDP协议对比
TCP协议(称为流式协议)
优点:
- 数据安全
缺点:
- 传输速度慢
- 黏包