我的代码将数据包发送到我的局域网中的指定范围的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很陌生并以各种可能的方式思考。也许这听起来很愚蠢但我相信每次收到回复它都会占据"占据"套接字,以便其他主机无法发送回复。
任何人都知道这里发生了什么以及如何解决这个问题? 要清楚脚本是否有效,但它会随机跳过正面结果。