Найти - Пользователи
Полная версия: Зацикливается программа
Начало » Python для новичков » Зацикливается программа
1
LeFruit
Доброе утро! Не могу понять, почему зацикливается программа (Python 2.7, Windows 7 64-bit):

import threading,sys
from socket import *

class MyThread(threading.Thread):
def __init__(self, func, ip, port):
threading.Thread.__init__(self)
self.func = func
self.ip = ip
self.port = port
def run(self):
apply(self.func,(self.ip, self.port))

def Scan(ip,port):
sk = socket(AF_INET, SOCK_STREAM)
sk.connect((ip, port))
if getservbyport(port) != '' : print "[*] OPEN :",port," :: ",getservbyport(port)
sk.close()

def s():
print '\nStart'
for i in range(start,(end+1)):
MyThread(Scan,host,i).start()


host = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])
s()
Андрей Светлов
А как вы увидели, что она “зацикливается”?
sk.connect при неудаче бросает исключение, не мешало бы его обрабатывать.
LeFruit
Это моё предположение, и возможно оно ошибочное.

def Scan(ip,port):
try:
sk = socket(AF_INET, SOCK_STREAM)
sk.connect((ip, port))
if getservbyport(port) != '' : print "[*] OPEN :",port," :: ",getservbyport(port)
sk.close()
except:pass
Добавил обработку исключений, результат остался прежний.
Андрей Светлов
Не поверите - но у меня работает!
LeFruit
И корректно выходит обратно в командную строку? У меня она тоже находит открытые порты, но после этого продолжает работать, приходится завершать через Crtl+Break.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB