← retour aux snippets

socket: client TCP avec timeout

Établir une connexion TCP, envoyer et recevoir avec délai maximal.

python network #socket#tcp#timeout

objectif

Établir une connexion TCP, envoyer et recevoir avec délai maximal.

code minimal

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(0.5)
try:
    s.connect(("127.0.0.1", 9))  # port discard (souvent fermé)
except Exception:
    print(True)  # attendu: True (connexion échoue en local)
finally:
    s.close()

utilisation

import socket
s = socket.create_connection(("data.pm", 80), timeout=1.0)
s.sendall(b"HEAD / HTTP/1.0\r\nHost: data.pm\r\n\r\n")
data = s.recv(1024)
s.close()
print(b"HTTP/" in data)

variante(s) utile(s)

import socket
with socket.create_connection(("data.pm", 80), timeout=1.0) as s:
    print(s.gettimeout() == 1.0)

notes

  • create_connection gère DNS et timeouts proprement.
  • Fermez toujours les sockets (context manager recommandé).