我在使用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....
希望它足够清楚,并提前感谢!
TCP设计为流协议,如果您读得不够快,它会堆积在缓冲区中。例如,UDP是一种dgram协议,它具有可单独读取的固定数据包。