Недопустимый аргумент был предоставлен после истечения времени ожидания сокета
Я новичок в питоне. Написано на python 3.6
Вы можете пропустить часть ipRange
Это код:
import socket
def ipRange(start_ip, end_ip):
start = list(map(int, start_ip.split(".")))
end = list(map(int, end_ip.split(".")))
temp = start
ip_range = []
ip_range.append(start_ip)
while temp != end:
start[3] += 1
for i in (3, 2, 1):
if temp[i] == 256:
temp[i] = 0
temp[i-1] += 1
ip_range.append(".".join(map(str, temp)))
return ip_range
ip_range = ipRange("192.168.0.101", "192.168.0.110")
#To this point everything is fine since it is not my code
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
# if i add s.setblocking(1) it works, but it is really slow and not printing
# out "timed out" error message
for ip in ip_range:
try:
con = s.connect((ip, 80))
con.close()
except Exception as msg:
print(ip, msg)
Я хочу, чтобы этот код выводил ip и сообщение об ошибке исключения "ConnectionRefusedError" или сокета "timed out" только после ошибки "timed out", каждое следующее исключение msg "Недопустимый аргумент".
Ракушка:
192.168.0.101 [WinError 10061] No connection could be made because the
target machine actively refused it #Good
192.168.0.102 [WinError 10061] No connection could be made because the target
machine actively refused it #Good
192.168.0.103 [WinError 10061] No connection could be made because the target
machine actively refused it #Good
192.168.0.104 timed out #Good
192.168.0.105 [WinError 10022] An invalid argument was supplied #Not good
192.168.0.106 [WinError 10022] An invalid argument was supplied #
192.168.0.107 [WinError 10022] An invalid argument was supplied
192.168.0.108 [WinError 10022] An invalid argument was supplied
192.168.0.109 [WinError 10022] An invalid argument was supplied
192.168.0.110 [WinError 10022] An invalid argument was supplied
Все хорошо, пока "тайм-аут" MSG. После этого я хочу, чтобы он снова напечатал "timed out" msg для следующего IP-адреса или распечатал "ConnectionRefusedError" - это означает, что устройство подключено к этому IP-адресу на локальной сети.
Позже я попытаюсь заставить этот скрипт распечатать все устройства, которые подключены к локальной сети.
Я надеюсь, что вы поняли. Заранее спасибо.