Python UDP 同时收发信息的实现方法
本文介绍如何在 Python 中利用多线程技术实现 UDP 套接字的并发数据收发。通过创建独立的发送和接收线程,程序可以在绑定本地端口后,一边接收指定 IP 和端口的数据,一边向目标地址发送信息,从而解决单线程模式下收发阻塞的问题。
实现 UDP 同时收发信息
import socket
import threading
def fa(udp_socket,recv_ip,recv_data):
# 3 发送信息
while True:
data = input("输入你要发送的数据:")
udp_socket.sendto(data.encode("utf-8"),(recv_ip,recv_data))
def shou(udp_socket):
# 4接收数据
while True:
user_data = udp_socket.recvfrom(1024)
a = user_data[0]
b = user_data[1]
print("用户:%s发来的数据为:%s" % (str(b), a.decode("utf-8")))
def main():
# 1创建套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 2 绑定本地信息
udp_socket.bind(("",7892))
recv_ip = input("输入对方ip:")
recv_data = int(input("输入对方端口:"))
t1 = threading.Thread(target=fa,args=(udp_socket,recv_ip,recv_data))
t2 = threading.Thread(target=shou,args=(udp_socket,))
t1.start()
t2.start()
if __name__ == '__main__':
main()
运行结果展示

Python 发送 UDP 数据的工具代码
import socket
from time import sleep
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
nCnt = 0
while True:
if nCnt >5 :
sleep(2)
nCnt = 0
for data in [b'$123;CLEARHOLE;Product_id,Barcode_Cnt,0,NG,05&,\r',
]:
# 发送数据:
s.sendto(data, ('127.0.0.1', 10000))
# 接收数据:CLEARHOLE
#print(s.recv(1024).decode('utf-8'))
sleep(0.5)
nCnt += 1
s.close()
以上为个人经验总结,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













