2012-03-06 90 views
0

我正在写在TCP/IP的简单二进制协议:它是由如下面TCP二进制协议实现

[命令datasize - 2字节的固定] [DATA]

利用此解决方案,即使我读了多条消息,我可以按照它的大小来划分每条消息,但是我有一个疑问:可能只接收一条消息的“部分”?

回答

2

您可以通过TCP流服务接收的唯一消息是单个字节。任何更复杂的内容都可能以单个字节或任何倍数来接收。所以,是的,您可以在一次接听电话中收到“一条短信”的“仅一部分”。

+0

当一个主机发送一个10字节的消息,也许我可以接收它分开(像前3个字节后面跟着最后7个字节),但TCP丢失了前3个字节并只接收最后7个字节是可能的? (也许在电缆干扰或无线连接等奇怪情况下) – cyberpro4 2012-03-08 08:27:02

+1

'TCP丢失了前3个字节并且只接收到最后7个字节是可能的?'不,没有一个行为良好的实施。由于前3个字节的传送失败,最后7个不会传送到应用层 - 序列号将会出现。 – 2012-03-09 12:01:13