Python UDP Server And Client

本文对比TCP与UDP协议,指出UDP无连接、速度快但不可靠。提供Python实现UDP服务端和客户端代码,服务端使用socket与threading处理多客户端请求,客户端随机发送数据并接收响应。

作者:zhuge··预计阅读 8 分钟·628 阅读·0 评论
Python UDP Server And Client

TCP用于建立可靠连接,并且通信双方可以以流的形式发送数据。相对于TCP,UDP面向无连接的协议。使用UDP协议时不需要建立连接,只需要知道对方的IP地址和端口号就可以直接发送数据包。但是发送的数据包是否能到达就不知道了。虽然用UDP传输数据不可靠,但是优点是速度快。对于不要求可靠到达的数据可以使用UDP协议。


服务端

import socket
import threading

def 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 threading

def 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()


相关文章

评论

加载中...