Что означает ECONNABORTED при попытке подключить сокет?

Я использую Python 2.7 на машине с Ubuntu.

Клиент пытается подключиться к серверу. Я получаю EINPROGRESS, который ожидается для неблокирующих сокетов.

Чтобы проверить, удалось ли установить соединение, я делаю то, что предлагает справочная страница для {connect}:

# EINPROGRESS The socket is nonblocking and the connection cannot be
# completed immediately.  It is possible to select(2) or poll(2) for
# completion by selecting the socket for writing.  After select(2)
# indicates writability, use getsockopt(2) to read the SO_ERROR option at
# level SOL_SOCKET to determine whether connect() completed successfully
# (SO_ERROR is zero) or unsuccessfully (SO_ERROR is one of the usual error
# codes listed here, explaining the reason for the failure)

Когда сервер находится в автономном режиме, это дает мне ECONNREFUSED. Все идет нормально.

При сбое подключения я хочу повторить попытку несколько раз.

Проблема: когда я второй раз пытаюсь подключиться к тому же сокету, {connect} отправляет мне ECONNABORTED. Этого нет на справочной странице {connect}. Что это значит?

7
задан Niriel 10 March 2012 в 12:49
поделиться