socket.connect () не выдает исключение, когда ничто не связано с хостом? - PullRequest
0 голосов
/ 11 октября 2019

Попытка подключения к TCP-сокету, но возникли странные проблемы с отключением / повторным подключением. Я остановил все, что работает на порту пользователя fuser -k PORT/tcp, но все еще вижу, что socket.connect () успешно возвращается.

Может ли кто-нибудь пролить свет на то, почему это не вызовет исключение при подключении ()?

SERVER_IP = '... an ip address of a real apache server, nothing bound to 2000'
PORT = 2000
new_socket = socket.socket()
new_socket.settimeout(4.0)
try:
    new_socket.connect((SERVER_IP, PORT))
except Exception as e:
    print('unable to connect')
    return # EXPECTED TO RETURN HERE
else:
    new_byte = new_socket.recv(1)
    if len(new_byte) == 0:
        print('empty!') # GET HERE

Документы сокета предполагают, что получение пустого ответа (len() == 0) будет означать, что хост сообщает, что не будет отправлять дополнительную информацию , но если нетTCP-сокет, размещенный на этом порту, я не знаю, как этот код когда-либо будет достигнут.

...