🔥
【Python】HTTP/1 クライアントに epoll を使う
import socket, select
HOST = '127.0.0.1'
PORT = 8000
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.connect((HOST, PORT))
sock.setblocking(0)
sock.send(b'GET / HTTP/1.1\r\n\r\n')
epoll = select.epoll()
epoll.register(sock.fileno(), select.EPOLLIN)
response = b''
while(True):
events = epoll.poll()
for fileno, event in events:
if event & select.EPOLLIN:
data = sock.recv(1024)
if data:
response += data
else:
break
else:
continue
break
print(response.decode())
epoll.unregister(sock.fileno())
epoll.close()
sock.close()
Discussion