为了账号安全,请及时绑定邮箱和手机立即绑定

关闭所有客户端后关闭服务器

关闭所有客户端后关闭服务器

心有法竹 2021-11-16 16:58:31
我有一个非常基本的套接字脚本,它向客户端发送一条消息。服务器脚本的一部分:while True:    con,address=s.accept()    con.send("Hello from server".encode())    con.close()s.close()客户端脚本的一部分:message = s.recv(5)while message:    print("Message", message.decode())    sleep(1)    message=s.recv(5)s.close()我开始了 2 个客户。它们都打印消息(一次 5 个字节),然后关闭。但是服务器保持打开状态,因为它仍在等待客户端。退出服务器while True循环的正确方法是什么?
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

您必须指定您希望服务器退出的条件。通常,服务器像守护进程一样被编程,即无限期运行。在python中,你已经有办法打破无限while循环——Ctrl-C触发键盘异常。否则,请考虑以下事项:

  1. 在 N 个客户端处理后,break在循环内。您需要有一个柜台并跟踪处理的客户

  2. 在某些 POSIX 信号上,例如如何在 Python 中捕获 SIGINT?,通常这是守护进程很好地终止的方式

顺便说一句,您的服务器代码可能需要重写:您目前一次只能处理一个客户端,而没有并行处理。当您有很多客户时,很容易遇到排队阻塞问题。


查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信