0

我正在使用 C++ 中的套接字编写客户端-服务器应用程序。

通信协议本质上是:

  1. 客户端连接到服务器。
  2. 客户端向服务器“发送”一个 ASCII 命令。
  3. 服务器远程执行命令,并获取结果,并将结果发送回客户端。

结果可以是数兆字节的数据。将所有结果发送到客户端后,我希望服务器向客户端发出信号通知它已完成。

closesocket() 是最好的方法,还是应该向客户端发送一条消息,表明没有更多结果,客户端可以决定是否关闭套接字?关闭套接字的缺点是客户端如果要执行另一个命令则需要建立新连接,但是从服务器发回消息的缺点是客户端需要扫描每个recv以确定结果是否完成。

哪个是最佳实践?

4

1 回答 1

3

我会采取稍微横向的方法:

  • 客户端向服务器发送命令
  • 服务器发送响应大小,然后发送真正的响应
  • 客户端可以发出新命令/关闭连接

通过这种方式,客户端知道要读取多少,并可以决定是否关闭连接。

于 2012-02-21T18:32:28.417 回答