【发布时间】:2016-02-02 13:02:41
【问题描述】:
我正在制作一个客户端-服务器应用程序,但在服务器等待来自客户端的数据时遇到了一些麻烦。
在我的客户端连接到服务器套接字后,服务器打开他的新线程并从客户端获取数据(JSON 格式)。 到目前为止,我的代码适用于一条消息。当我添加while循环时,总是接受消息我遇到了问题。经过一些测试,我发现 recv() 函数没有等待新数据并继续到下一行,这就是造成问题的原因。 如果你能帮我解决问题,我会很高兴。
我的接收数据循环(循环的第一次迭代有效,但在第二次迭代中接收数据不等待数据并产生问题,因为下一行没有得到任何数据)-
while True:
data = self.client.recv(self.size) # receive data
message = self.JSON_parser(data) # parser the data (data in json format)
process_message = processing.Processing(message[0]['key'],message[0]['user'],message[0]['data']) # send the receive data to the initialize process
process_return = process_message.action() # call to the action function
self.client.send(process_return) # send to the client message back
【问题讨论】:
-
recv()返回后的data是什么?一个空字符串? -
问题是没有数据发送到服务器所以recv()没有得到数据(recv()需要等待但他不等待,什么都没有),为空。
-
空字符串表示关闭连接。客户端或服务器在第一条消息后关闭套接字
-
谢谢 我不知道这意味着客户端或服务器正在关闭套接字+1(;
标签: python while-loop server recv