Недопустимый аргумент был предоставлен после истечения времени ожидания сокета

Я новичок в питоне. Написано на 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-адресу на локальной сети.

Позже я попытаюсь заставить этот скрипт распечатать все устройства, которые подключены к локальной сети.

Я надеюсь, что вы поняли. Заранее спасибо.

0 ответов

Другие вопросы по тегам