我创建一个serversocket并将其绑定到一个本地端口,然后告诉它在backlog中最多排队5个连接。我想要一种方法来检测clientsocket何时连接到serversocket/当backlog有排队连接时。我在管理插座.接受()在一个单独的线程中,并且需要能够停止单独的线程,当线程挂起时我无法停止插座.接受(). 在
原因是我试图让服务器套接字只在用户运行命令时侦听连接,然后在用户运行其他命令时停止。在
我希望我的代码读起来像:
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((socket.gethostname(), 1024))
serversocket.listen(5)
class connectListner (threading.Thread):
def run(self):
while True:
if <item in backlog>:
clientsocket, address = serversocket.accept()
pass
然后我可以使用螺纹连接()停止线程
任何帮助都将不胜感激
我建议您使用将套接字设置为非阻塞模式,并使用
select
来 知道客户机何时在等待accept
,因为服务器套接字变为可读:1秒后,如果没有客户端连接,select调用结束,并将启动 再次通过您的
while
循环。因此,如果readable
为空,则可以退出线程 例如,列表。如果需要,可以为select
设置较低的超时 更精细的线纹控制。在相关问题 更多 >
编程相关推荐