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

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

Есть ли простой способ сделать это, или это будет сложно?

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

2 Solutions collect form web for “Тайм-аут соединения сокетов Python”

Вам просто нужно использовать метод 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) 

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

 sock = socket.create_connection(address, timeout=10) sock.settimeout(None) fileobj = sock.makefile('rb', 0) 
  • Python думает, что я передаю больше аргументов, чем я?
  • Как языки сценариев используют сокеты?
  • Errno 10061 в python, я не знаю, что делать
  • Привязать IPv6-адрес к сокету Python в качестве IP-адреса источника
  • Несколько одновременных сетевых подключений - сервер Telnet, Python
  • Как читать JSON из сокета в python? (Инкрементный синтаксический анализ JSON)
  • В чем разница между socket.send () и socket.sendall ()?
  • Portscanner не работает должным образом, возможно, семантическая ошибка
  • Python - лучший язык программирования в мире.