Подтвердить что ты не робот

Тайм-аут соединения сокетов Python

У меня есть сокет, который я хочу отключить при подключении, чтобы я мог отменить всю операцию, если он еще не может подключиться, но также хочет использовать make файл для сокета, который не требует тайм-аута.

Есть ли простой способ сделать это или это будет трудная вещь?

Предоставляет ли python reset таймаута после подключения, чтобы я мог использовать make файл и все еще имею тайм-аут для подключения сокета

4b9b3361

Ответ 1

Вам нужно всего лишь использовать метод settimeout(), прежде чем пытаться выполнить connect(), обратите внимание, что после подключения вы должны settimeout(None) чтобы установить сокет в режим блокировки, это необходимо для make файла. Вот код, который я использую:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect(address)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)

Ответ 2

Если вы используете Python2.6 или новее, удобно использовать socket.create_connection

sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)

Ответ 3

Для установки времени ожидания Socket вам необходимо выполнить следующие шаги:

import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(10.0)