【发布时间】:2011-09-13 15:47:44
【问题描述】:
我有一个客户端和一个服务器通过标准 TCP 连接相互通信。
服务器配置为以大小一致的 x 字节块发送数据。客户端还配置为以 x 字节为单位接收数据(即客户端期望调用 TCP 堆栈以接收 x 字节将成功,除非与远程端的连接失败)。
可以将我的基于 TCP 的协议建立在上述假设之上吗?
【问题讨论】:
标签: sockets tcp network-programming ip
我有一个客户端和一个服务器通过标准 TCP 连接相互通信。
服务器配置为以大小一致的 x 字节块发送数据。客户端还配置为以 x 字节为单位接收数据(即客户端期望调用 TCP 堆栈以接收 x 字节将成功,除非与远程端的连接失败)。
可以将我的基于 TCP 的协议建立在上述假设之上吗?
【问题讨论】:
标签: sockets tcp network-programming ip
没有。 TCP 是一种基于流的协议。除非您自己在应用程序级别处理分块,否则您不能保证“分块”。 TCP 作为一种协议不会为您保证这一点。
【讨论】:
似曾相识Will TCPStream read block until all data is received.
我意识到这看起来有点不同,但本质上它们是非常相似的问题。
不要对数据包大小做出假设。
【讨论】: