我试着在一个python代码下面做两个udp监听服务器的代码
import threading
import time
import socket
class udpreceive:
def __init__(self,port,ip):
self.port = port
self.ip = ip
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.bind((self.ip, self.port))
def startserver(self):
while True:
time.sleep(1)
data, addr = self.sock.recvfrom(1024)
print (data)
server1 = udpreceive(514,"192.168.1.5")
s1 = threading.Thread(target=server1.startserver())
server2 = udpreceive(515,"192.168.1.5")
s2 = threading.Thread(target=server2.startserver())
s2.start()
s1.start()
这是udp发送方1的客户端代码
^{pr2}$这是发送者2的客户端代码
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
counter =0
while True:
send_data = "hellow world server2 :- "+ str(counter)
sock.sendto(send_data.encode(), ("192.168.1.5", 514))
print (send_data)
counter +=1
当我运行接收代码时,它只显示发送方1的数据。只启动发送方2并启动接收代码,但不显示任何发送方2发送数据,但我启动发送方1接收代码显示发送方1数据。在
我做错什么了?我需要在接收程序中显示发送方1和发送方2的数据
我是oop和socket编程的新手 谢谢
在线程模块中,“target”关键字参数不应包含括号, 见How NOT to wait for a thread to finish in Python。它应该是:
然后,两个UDP服务器线程应启动,然后连接,因为公平地共享CPU资源很重要(尤其是在使用无限循环时)。在
服务器的代码可以是:
^{pr2}$同时,您可能需要将发送方2中的代码更改为:
^{3}$相关问题 更多 >
编程相关推荐