【发布时间】:2016-06-14 05:55:56
【问题描述】:
我有一个 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 而失败
【问题讨论】:
-
我想说你真的应该看看芹菜。如果它必须在单个脚本中,则需要使用单独的处理器,因为某些操作可能会阻塞。如果您必须在两者之间共享状态,那么您需要使用类似 manager dict 的东西。
-
我绝对希望它在同一个脚本中
-
那么您将不得不运行单独的处理器(感谢 gil),但使用经理 dict docs.python.org/2/library/… 这应该没什么大不了的。
标签: python sockets asynchronous python-3.5