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é).