python - 陷入 while 循环 python

标签 python while-loop

我正在用 Python 创建一个聊天服务器,并且对这门语言的了解还很浅。我现在有 1 个问题,我想在进一步解决之前解决,但我似乎找不到解决问题的方法。

这是一个持续的 while 循环..

下面的代码是哪里出错了

while 1:
    try:
        data = self.channel.recv ( 1024 )
        print "Message from client: ", data
        if "exit" in data:
            self.channel.send("You have closed youre connection.\n")
            break
    except KeyboardInterrupt:
        break
    except:
        raise

当这段代码被执行时,我需要在我的客户端上输入“exit”来退出连接。这很有用,但是当我使用 CTRL+C 退出连接时,我的服务器打印“来自客户端的消息:”数千次。

我哪里错了?

最佳答案

您在客户端按下 Ctrl-C。这会导致服务器的 self.channel 关闭。

由于在关闭的 channel 上调用 recv() 会立即返回一个空字符串,您的服务器代码会陷入无限循环。

要解决此问题,请将以下行添加到您的服务器代码中:

data = self.channel.recv ( 1024 )
if not data: break # <<< ADD THIS

或者,按照@sr2222 的建议,您可以将此检查和当前检查合并为一个:

if not data or 'exit' in data: 

如果 channel 已关闭,这将退出循环。

关于python - 陷入 while 循环 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255769/

相关文章:

python - Python中TwitterAPI中的TwitterPager如何进行多次调用?

python - Pyinstaller 错误 xfd 模块

Python/Pygame 向量数学

C++ - 使用 io 重定向输入和输出多个整数

python - while 循环打印 1 到 10 之间的随机数并在数字为 N 时停止

c++ - 循环错误试图验证有效输入以在 C++ 中加倍

python - 自制微型内存缓存

python - 通过 Python 插入远程 Couchbase 服务器

Java - 程序没有跳出循环?

java - 找不到无限循环