相对于TCP协议的通信,UDP通信的代码更加简单,同时一个服务端可以同时接受来个多个客户端的消息。
服务端:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM) # type=socket.SOCK_DGRAM 使用UDP协议,默认为TCP
sk.bind(('127.0.0.1', 9001)) # 绑定ip和端口号
while True:
msg, addr = sk.recvfrom(1024) # recvfrom 可以获取来自客户端的ip地址和端口号
print(msg.decode('utf-8'))
send_msg = input(">>>")
sk.sendto(send_msg.encode('utf-8'), addr) # 根据所获取的ip和端口向客户端发送信息
服务端需要一直开启才能保持与一个客户端断开连接后能继续接收其他客户端的消息,所以在收到客户端的退出指令后服务端不做任何处理。
客户端:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM) # type=socket.SOCK_DGRAM 使用UDP协议
server = ('127.0.0.1', 9001) # 所请求的服务器的ip的端口
while True:
send_msg = input('>>>')
if send_msg.upper() == 'Q': # 发送Q时,客户端退出服务
break
sk.sendto(send_msg.encode('utf-8'), server) # 想服务端发送信息
msg = sk.recv(1024) .decode('utf-8') # 接受服务端发送的信息
if msg.upper() == 'Q': #收到Q时,客户端退出服务
break
print(msg)
sk.close()