if data.find('!scan') != -1:
nick = data.split('!')[ 0 ].replace(':','')
targetip = str(socket.gethostbyname(args))
sck.send('PRIVMSG ' + chan + " :" ' scanning host' + " " + targetip + '\r\n')
for i in range(20, 1025):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex((targetip, i))
if (result == 0) :
s.send('PRIVMSG ' + chan + " :" 'port %d: OPEN' % (i,) + '\r\n')
s.close()该脚本可以工作,但它ping超时之前,它可以得到一个开放的端口,我怎么才能使它可以扫描一些端口,然后检查一个来自服务器的ping,并发送一个pong,然后扫描更多的端口,以便它不会ping超时。
发布于 2011-04-14 05:51:18
最好的解决方案是使用多线程,主线程解析来自IRC的输入并响应PINGs,而其他线程执行实际的命令处理和任何可能需要很长时间的工作。
我的IRC机器人skybot每当发出命令时都会产生一个新线程,并使用线程安全队列在它们之间传递消息。
https://stackoverflow.com/questions/5655968
复制相似问题