基于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】示例模版
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)
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和端口,再向另一方返回数据的,所以一方发生问题并不会影响到另一方