【发布时间】:2015-04-24 14:31:15
【问题描述】:
我正在编写 tcp 套接字程序。
当我从客户端发送比以前发送短的字符串并在服务器上接收它时,发生了一些奇怪的事情。例如:
首先我发送 '999999999'。服务器接收良好。
之后,我发送较短的字符串:'7777777'。但是服务器上的数据是'777777799'。
为什么之前的数据在下次发送时仍然存在?
我的代码如下:
// Section: client sending data ----
NetworkStream serverStream = clientSocket.GetStream();
byte[] outStream = Encoding.ASCII.GetBytes("999999999");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
// Section: Server reading data ----
while ((true))
{
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
dataFromClient = Encoding.ASCII.GetString(bytesFrom);
networkStream.Flush();
}
【问题讨论】:
-
您是否在第二次读取之前清除 bytesFrom?我怀疑你的缓冲区 bytesFrom 中有旧数据!
-
您确定服务器在第一次读取时看到的是完整的“999999999”吗?
标签: c# sockets stream tcpclient