使用套接字,发出通信结束信号的最佳做法是什么
using sockets, what is the best practice to signal an end of communications?
我正在使用C++中的套接字编写一个客户端-服务器应用程序。
通信协议本质上是:
- 客户端连接到服务器
- 客户端向服务器"发送"ASCII命令
- 服务器远程执行命令,获取结果,并将结果发送回客户端
结果可以是多兆字节的数据。一旦所有结果都发送到客户端,我希望服务器向客户端发出完成的信号。
关闭套接字()的最佳方式是,还是应该向客户端发送一条消息,指示没有更多结果,客户端可以决定是否关闭套接字?关闭套接字的缺点是,如果客户端想要执行另一个命令,则需要建立新的连接,但从服务器发回消息的缺点是客户端需要扫描每个recv以确定结果是否完成。
哪种做法是最好的?
我会采取稍微横向的方法:
- 客户端向服务器发送命令
- 服务器发送响应大小,然后是实际响应
- 客户端可以发出新命令/关闭连接
通过这种方式,客户端知道要读取的内容,并可以决定是否关闭连接。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- Qt VTK交互风格的信号到小部件
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 派生类销毁的最佳实践是什么
- 线程之间的布尔停止信号
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 使用信号检测子进程何时终止的最佳方法是什么?
- Qt :等待来自函数的信号的最佳方法
- 使用套接字,发出通信结束信号的最佳做法是什么
- MapViewOfFile中信号量的最佳方法- c++
- 是否有事实上的标准例外或最佳实践方法来发出异常"invalid input"信号?
- 在SystemC中检查信号是否有效的最佳方法是什么?
- 在服务器应用程序中处理中断信号的最佳方式
- 产品/消费者-什么是最佳的信号模式