在我现在正在工作的项目中,我的任务是用python创建一个服务器客户端程序。 这个想法是让“n”个远程设备连接到服务器。通过套接字编程,服务器将侦听设备发出的连接请求,并为每个请求创建一个线程。每个线程将负责从设备接收数据。基本上,该程序的工作原理如下:
现在,一切工作正常,除了当出现套接字错误或超时时,即使使用“break”命令中断了线程的循环,线程仍保持活动状态。我在代码中有一个打印,使用“threading.active_count()”命令不断计算活动线程。每次连接断开时,该数字都会增加。我认为这对于系统的性能/内存来说很糟糕。在寻找解决方案时,我找到了“thread.join()”命令,但据我了解,这会阻塞“侦听器”线程。我需要线程不断监听新客户端。有什么方法可以干净地杀死线程吗?垃圾收集器对此有好处吗?
好吧,我明白了,看来socket.accept()并没有继承客户端创建的套接字的配置。我需要在服务器端设置超时。我误读了文档。不管怎样,谢谢你。