👋

【Python】select で HTTP/1 クライアントをつくる

に公開
import socket
import select

HOST = '0.0.0.0'
PORT = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setblocking(False)
s.sendall(b"GET / HTTP/1.1\r\n\r\n")

socket_list = [s]

while True:

    read, write, error = select.select(
        socket_list, [], [])

    for sock in read:
        if sock == s:
            data = sock.recv(1024)
            if data:
                print(data.decode())
            else:
               read.remove(sock)
               break

    if len(read) == 0:
        break

s.close()

Discussion