xml - 通过 TCP 套接字发送可变长度数据

标签 xml sockets tcp variable-length

我的应用程序需要通过 tcp 套接字发送/接收 xml 数据。无法包含任何类型的包含消息长度的固定长度 header 。据我了解,通过 tcp 传输的数据可以像这样到达接收方。

  1. <消息

  2. ge><内容

  3. >嗨

但不知何故,这永远不会发生,这意味着通过一次 Send() 操作发送的数据(假设它小于或等于套接字缓冲区大小)总是通过一次 Receive() 操作完全读取。如果端点的套接字缓冲区足够大并且从未超过,是否可能出现上述情况?

最佳答案

是的,这是可能的。

你真的不能假设一侧的 send() 操作中的缓冲区边界与另一端相应的 recv() 所看到的缓冲区边界匹配,即使大多数情况下看起来是这样.

例如,如果您要发送大量数据,接收操作系统可能会调用 TCP 流量控制,而发送操作系统将只能发送缓冲区的一部分。或者可能底层网络有数据包大小限制,需要拆分,或者......

关于xml - 通过 TCP 套接字发送可变长度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660993/

相关文章:

xml - <xsl :apply-templates/> and <xsl:apply-templates select ="."/> 有什么区别

xml - 解码 XML 以构造并转换为 slice

c - Linux errno 23 和 Linux errno 24 的区别

sockets - 在 Erlang 中确定传入 TCP/IP 连接的 IP 地址和端口

c# - 获取 tcp 套接字序列号和 ack 号

java - Android:与工作线程通信发送消息

java - Servlet 没有显示任何输出

c++ - 使用read函数从socket中读取数据

c - UNIX 网络编程中的前缀是什么意思?

iphone - 使用带有 XML 的字典 (iphone/iOs)