Python recv()函数不等待数据

Python recv()函数不等待数据,python,while-loop,server,recv,Python,While Loop,Server,Recv,我正在制作一个客户端-服务器应用程序,当服务器等待来自客户端的数据时,我遇到了一些问题 在客户端连接到服务器套接字后,服务器打开新线程并从客户端获取数据(JSON格式)。 到目前为止,我的代码只适用于一条消息。当我添加while循环时,它总是接受消息,我遇到了一个问题。在一些测试之后,我发现recv()函数没有等待新数据,而是继续到下一行,这就是造成问题的原因。 如果你能帮我解决这个问题,我会很高兴的 我的接收数据循环(循环的第一次迭代有效,但在第二次迭代中接收数据不会等待数据并产生问题,因为下

我正在制作一个客户端-服务器应用程序,当服务器等待来自客户端的数据时,我遇到了一些问题

在客户端连接到服务器套接字后,服务器打开新线程并从客户端获取数据(JSON格式)。 到目前为止,我的代码只适用于一条消息。当我添加while循环时,它总是接受消息,我遇到了一个问题。在一些测试之后,我发现recv()函数没有等待新数据,而是继续到下一行,这就是造成问题的原因。 如果你能帮我解决这个问题,我会很高兴的

我的接收数据循环(循环的第一次迭代有效,但在第二次迭代中接收数据不会等待数据并产生问题,因为下一行没有获得任何数据)-

如果
recv()
返回空字符串,则表示连接已关闭

套接字可以由客户端关闭,也可以由服务器关闭。在本例中,查看您发布的服务器代码,我几乎可以肯定客户端正在关闭连接,可能是因为它正在退出

通常,服务器代码应如下所示:

while True:
    data = self.client.recv(self.size)
    if not data:
        # client closed the connection
        break
    message = self.JSON_parser(data)
    ...

额外提示:长JSON消息可能需要多次调用
recv()
。类似地,
recv()
可能会返回多条JSON消息


确保适当地实现缓冲。考虑并逐行读取消息(假设您的消息由换行符分隔)。

<代码>数据>代码> >代码> ReV()/<代码>何时返回?空字符串?问题是没有数据发送到服务器,所以recv()没有获取数据(recv()需要等待,但他没有等待,什么都没有),空字符串。空字符串表示连接已关闭。在第一条消息发出后,客户端或服务器正在关闭套接字谢谢,我不知道这意味着客户端或服务器正在关闭套接字+1(;
while True:
    data = self.client.recv(self.size)
    if not data:
        # client closed the connection
        break
    message = self.JSON_parser(data)
    ...