如何在循环中从服务器接收数据并将数据发送到客户端

时间:2017-01-16 12:46:22

标签: c sockets

如何保持连接客户端的连接监听?在下面的代码中,线程接收数据并回复客户端并断开连接。我想把接收和发送过程放在循环中。我怎么能这样做?

[ { message: 'Invalid JSON payload received. Unknown name "view_id" at \'report_requests[0]\': Cannot find field.',
   domain: 'global',
   reason: 'badRequest' } ] }

1 个答案:

答案 0 :(得分:0)

首先,recv函数不保证您读取发件人已写入的所有内容。您可能会获得部分数据(例如,发送者可能会发送10KByte,但接收者在首次阅读时可能只收到1.5K)。

其次,send功能并不保证它会发送您要求的所有内容。如果不是所有内容都已发送,您需要发送其余的答案。

第三,TCP是面向流的。这意味着您需要将一条消息与另一条消息分开。对于基于文本的协议,通常使用“新行”来实现此目的。

全部放在一起。如果您想要持久连接请求,则需要:

  • 定义请求和响应分隔符
  • 维护读缓冲区
  • 将所有数据读入缓冲区并扫描它以获取请求分隔符
  • 使用响应分隔符发送响应

如果你想在网络编程中升级,你可能想知道一些非阻塞操作和轮询/选择功能。