2011-04-13 138 views
0
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和发送一个乒乓球那么扫描一些更多的端口,以防止ping超时。MIRC端口扫描器

回答

1

最好的解决方案是使用多线程,主线程解析来自IRC的输入并响应PING,而其他线程执行实际的命令处理以及任何可能需要很长时间的任何操作。

skybot,我的IRC bot会在发出命令时产生一个新线程,并使用线程安全队列在它们之间传递消息。

+0

一个线程安全的队列是一个机器人的好主意。我应该添加到我的基于插件的机器人。 – bgw 2011-04-13 23:43:53