Python套接字收到多个数据,不准确的结果让我发疯

时间:2016-12-25 01:21:40

标签: python sockets

我的代码将数据包发送到我的局域网中的指定范围的ip并等待响应。但是代码有效,但结果不准确。

有时它给出了4个不同ip的结果,有时6个结果与前面的结果有一些不同的ip。

我知道我的局域网总共有12个好成绩,应该是找到的好成绩。

我不知道代码中的错误在哪里。

def bindupnp():
 s = socket(AF_INET, SOCK_DGRAM)
 s.bind(("", tport))
 print "Binded ! Waiting to receive some data.."
 return s

def unbindupnp(s):
 print("Unbinding Upnp socket port, waiting 5 results for last results to come in..")
 time.sleep(5)
 s.close() 

def scanupnp(tar):
 try:
  #print "Sending UPNP packets to "+tar
  socketslotupnp.sendto(msg, (tar, upnport))
  string, addr = socketslotupnp.recvfrom(1024)
  upnpdata.append([addr[0], string])
 except Exception as e: print(e)

1我用bindupnp()

绑定我的端口

2我使用scanupnp()

扫描我的局域网中的目标主机

3扫描完我的整个局域网(192.168.0.1 - 192.168.0.255)后,我再次使用unbindupnp解除绑定()

我对Python很陌生并以各种可能的方式思考。也许这听起来很愚蠢但我相信每次收到回复它都会占据"占据"套接字,以便其他主机无法发送回复。

任何人都知道这里发生了什么以及如何解决这个问题? 要清楚脚本是否有效,但它会随机跳过正面结果。

0 个答案:

没有答案