【发布时间】:2013-06-15 14:16:23
【问题描述】:
我正在做一个套接字项目。我想用 TCP 发送 ~4kb 数据。我需要在这里问一个问题。那就是:如果我用 TCP 发送 ~4kb 数据,我的数据处理函数可以再接收一次这个数据吗?即 RECEIVE(server-side) 函数可以返回 2 次(如果我发送一次 ~4kb 数据)?如果我能理解这一点,我将开始制作自己的数据包处理系统。
【问题讨论】:
-
这是一个常见的话题:我在tiny.cc/io介绍了其中的一些内容
-
@MarcGravell 谢谢!我会读这篇文章:)
-
也可能出现相反的情况;多次发送可能导致一次接收。 TCP 只是一个没有离散“消息”概念的流。正如其他人指出的那样,您需要开发一个协议,让您能够辨别何时收到一条完整的消息或多条消息。
-
@Idle_Mind "...你需要开发一个协议..."?即我应该通过 TCP 开发一个*协议?这是一个函数还是一个真正的套接字协议,如 UDP-HTTP-TCP?
-
您开发了一个基于 TCP 的协议。我的意思是一种让您发送字节流并且仍然能够确定离散消息在哪里开始和结束的方法。这可以通过固定和/或可变长度消息、分隔符、标头等的组合来完成。