如何在Python中实现非阻塞的accept()?
我不能使用线程,所以我想写一个可以在一段时间后被中断的服务器程序:
d = show_non_modal_dialog("serving clients") s = socket(...) s.bind(...) s.listen() while (!user_pressed_cancel()) { s.accept() # timed accept for like 1 second if timed_out: continue serve_client close_client_sock } hide_non_modal_dialog(d)
1 个回答
7
使用一个非阻塞的套接字,并在这个套接字上调用accept。
s.setblocking(0)
你也可以为阻塞的套接字操作设置一个超时时间。
socket.settimeout(value)
你的代码中似乎也有个问题。
accept()会返回一对值(连接和地址),所以你的代码应该是这样:
conn, address = s.accept()