devtools/close-wait/slow_client.py
raw ยท 851 bytes
#!/usr/bin/env python3
import socket
import time
HOST = "127.0.0.1"
PORT = 12800
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Make receive buffer reasonably large so the kernel can queue data
# while the application is sleeping.
s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 8 * 1024 * 1024)
s.connect((HOST, PORT))
s.sendall(b"GET / HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n")
print("request sent; not reading for 5s")
time.sleep(5)
total = 0
chunks = []
try:
while True:
b = s.recv(65536)
if not b:
break
chunks.append(b)
total += len(b)
except ConnectionResetError as e:
print(f"RESET after {total} bytes: {e}")
raise
print(f"read total={total} bytes")
data = b"".join(chunks)
header, _, body = data.partition(b"\r\n\r\n")
print(header.decode(errors="replace"))
print(f"body bytes={len(body)}")