如何同时收听另一个端口和广播?蟒蛇

时间:2016-03-01 17:20:53

标签: python sockets asynchronous python-3.5

我有一个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有关,但是我无法让这些工作起作用?

我将循环命名为async def,但由于没有await

而导致失败

1 个答案:

答案 0 :(得分:0)

你本身并不需要线程来解决这个问题。 我想你应该看看选择 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