tcp - 如何在python中打破等待接受带有键盘中断的TCP连接的无限循环
问题描述
我有一个 TCP 服务器,它正在无限循环中等待连接。问题是我猜一旦它遇到 accept() 方法它就会进入睡眠状态,直到有一个可以接受的连接。我想用键盘中断跳出循环,但我猜由于函数正在等待连接,它只是忽略了中断..
def start_main_server(self):
print("The Server is ready to recieve")
socket_threads = list()
count = 0
while 1:
try:
connectionSocket, addr = self.serversocket.accept()
print("accepted")
connectionSocket.send(json.dumps(self.users).encode())
socket_threads.append(Thread(target=self.login,args=(connectionSocket,)))
socket_threads[count].start()
count += 1
except KeyboardInterrupt:
break
可执行代码:
# 编码=utf-8 从套接字导入 * 端口 = 12000 服务器名 = “127.0.0.1” 连接 =socket(AF_INET,SOCK_STREAM) connection.bind((服务器名,端口)) 连接.听(1) print("服务器已启动") 而1: 尝试: x = 连接.accept() 除了键盘中断: print("发生键盘中断") 休息 print("我不在循环中")
解决方案
推荐阅读
- php - 雄辩的按月查询并计算每个值
- amazon-sqs - 开发人员上的自触发 SQS 请求 - 为什么?
- linux - rc.d 脚本默认给定一个“开始”参数?
- google-apps-script - 将合并单元格格式发送到 GMAIL
- python - python while循环转换温度
- google-sheets - 谷歌表格:匹配功能不适用于某些时间值
- javascript - 按 ID 删除消息
- ruby-on-rails - Rails 5 - 无法使用 as_json 渲染关联
- symfony - 如何根据命令参数将服务动态注入 Symfony 命令。
- angular - 使用 Angular 和 Jest 的静态文件