def server(port): print("Server starting") sock = socket(AF_INET, SOCK_STREAM) sock.bind(("", port)) sock.listen(5) while True: yield ReadWait(sock) client, addr = sock.accept() yield NewTask(handle_client(client, addr))
def handle_client(client, addr): print(f"Connection from {addr}") while True: yield ReadWait(client) data = client.recv(65536) if not data: break yield WriteWait(client) client.send(data) client.close() print("Client closed") yield # make it a coro
def Recv(sock, maxbytes): yield ReadWait(sock) yield sock.recv(maxbytes)
def Accept(sock): yield ReadWait(sock) yield sock.accept()
def accept(self): yield ReadWait(self.sock) client, addr = self.sock.accept() yield Socket(client), addr
def recv(self, maxbytes): yield ReadWait(self.sock) yield self.sock.recv(maxbytes)