Tcp数据彼此附加

时间:2015-12-11 12:17:41

标签: tcp stream server client

我在使用tcp时遇到问题。 当我在客户端或服务器中读取和写入数据时,他应该每次都将其读取为一个数据包。

但有时当我快速写入数据时(例如循环),客户端将其作为一个数据接收,而不是将其作为三个不同的数据包处理。

发送数据:

messageToSend = Encoding.ASCII.GetBytes(data);        
c.GetStream().Write(messageToSend, 0, messageToSend.Length);

接收客户:

byte[] message = new byte[1024];
int i = 0;
i = c.GetStream().Read(message, 0, message.Length);
Encoding.ASCII.GetString(message, 0, i);
//Handle the new data....

希望它足够清楚,并提前感谢!

1 个答案:

答案 0 :(得分:1)

TCP设计是流协议,如果你没有足够快的速度读取它,它会被堆叠在缓冲区中。例如,UDP是dgram协议,它具有可单独读取的固定数据包。