如何同时监听一个端口和另一个端口的广播? Python
How to listen on a port and broadcast from another at the same time? Python
我有一个 python 脚本,它可以很好地侦听端口上的 UDP 数据包。
我已经知道如何广播 UDP 数据包,但我的软件设计要求我能够侦听 UDP 数据包并同时广播它们。
如何在程序继续运行的同时在一个端口上侦听 UDP 数据包,最终导致数据包广播?
简单地说,我想要我的收听循环....
print("Listening on port: " + str(self.recvPort))
while 1:
data = inSoc.recv(65536) # 16 bytes
# Recived some data from the server, Can PROCCESS NOW!
if not data:
pass
else:
print("Data has arrived!")
print("[Data] : ", data)
... 在后台持续 运行,同时脚本继续执行其他任务,其中一项是在不同的端口上广播。
我知道这应该与线程、_thread 或异步有关,但是我无法使它们正常工作?
我将循环命名为 async def
,但由于没有 await
而失败
您本来就不需要线程来解决这个问题。
我想你应该看看 select https://docs.python.org/2/library/select.html
然后你可以这样做:
while 1:
read, _, _ = select.select([inSoc],[],[], 0)
#if insoc has something for you to read
for soc in read:
data = soc.recv(65536)
#do something else
我有一个 python 脚本,它可以很好地侦听端口上的 UDP 数据包。 我已经知道如何广播 UDP 数据包,但我的软件设计要求我能够侦听 UDP 数据包并同时广播它们。
如何在程序继续运行的同时在一个端口上侦听 UDP 数据包,最终导致数据包广播?
简单地说,我想要我的收听循环....
print("Listening on port: " + str(self.recvPort))
while 1:
data = inSoc.recv(65536) # 16 bytes
# Recived some data from the server, Can PROCCESS NOW!
if not data:
pass
else:
print("Data has arrived!")
print("[Data] : ", data)
... 在后台持续 运行,同时脚本继续执行其他任务,其中一项是在不同的端口上广播。
我知道这应该与线程、_thread 或异步有关,但是我无法使它们正常工作?
我将循环命名为 async def
,但由于没有 await
您本来就不需要线程来解决这个问题。 我想你应该看看 select https://docs.python.org/2/library/select.html
然后你可以这样做:
while 1:
read, _, _ = select.select([inSoc],[],[], 0)
#if insoc has something for you to read
for soc in read:
data = soc.recv(65536)
#do something else