c++ - 网络编程。判断消息结束

标签 c++ c sockets network-programming cross-platform

Linux 缓冲套接字上接收到的所有消息。但在收到之前,这条消息有开始和结束。 Linux 将此消息按顺序写入缓冲区,因此会丢失消息结尾的信息。

我知道在 Linux 中我可以使用 cmsg_header。但是 Windows 不提供 send-/recvmsg() 过程。如何确定缓冲区平台不可知消息的结尾?

最佳答案

我不确定 TCP/IP 连接是否正在交换分隔明确的消息。路由器可以将数据包分段。 (所以 cmsg_header 可能不可靠)。

我所知道的所有基于 TCP/IP 的协议(protocol)(HTTP、SMTP、X11、RPCXDR)都在应用程序级别处理消息组织。您的应用程序库需要以某种方式知道“消息”何时何地开始或结束。

关于c++ - 网络编程。判断消息结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333051/

相关文章:

python - 使用 pip 安装任何模块时出错,但 easy_install 有效

java - 使用 AutoCloseable (try-with-resources) 关闭多个资源

c++ - 如何从 switch 语句中排除浮点值?

c++ - Windows下免费商用框架中ViewBox的替换

c++ - (unsigned char)str 与 str + 0xff 或 (unsigned int)value 与 value + 0xffff 哪个是更快的首选方法?

c++ - Qt 中的内部类

c - ReleaseStringUTF 能做的不仅仅是释放内存吗?

CreateDirectory 因权限被拒绝而失败

c++ - libgit2 - 两个文本 blob 的差异

c++ - 对原始套接字的读取可以一次返回多个数据包吗?