Попытка подключения к 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-сокет, размещенный на этом порту, я не знаю, как этот код когда-либо будет достигнут.