TCP用于建立可靠连接,并且通信双方可以以流的形式发送数据。相对于TCP,UDP面向无连接的协议。使用UDP协议时不需要建立连接,只需要知道对方的IP地址和端口号就可以直接发送数据包。但是发送的数据包是否能到达就不知道了。虽然用UDP传输数据不可靠,但是优点是速度快。对于不要求可靠到达的数据可以使用UDP协议。
服务端
import socket import threadingdef udplink(sock, data, addr): r_data = data.decode('utf-8') print(f'client -->{addr} ,new data receive {r_data}') sock.sendto(('hello' + r_data).encode('utf-8'), addr)
def udpserver(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) host = socket.gethostname() port = 8888 s.bind((host, port)) print('udp server start') while True: data, addr = s.recvfrom(1024) threading.Thread(target=udplink, args=(s, data, addr)).start() print('udp server stopped')
if name == 'main': udpserver()
客户端
import random import socket import threadingdef udpclient(thid): s =socket.socket(socket.AF_INET,socket.SOCK_DGRAM) for data in range(random.randint(10,20)): s.sendto((f'随机数发送数据{thid}-{data}').encode('utf-8'),(socket.gethostname(),8888)) print(s.recv(1024).decode('utf-8')) s.close()
if name=='main': for i in range(random.randint(10,20)): threading.Thread(target=udpclient,args=('客户端' + str(i),)).start()

评论