1
我正在写tcp套接字程序。
当我发送字符串,比以前发送,从客户端收到并在服务器上接收它,发生了一些奇怪的事情。例如:
首先我发送'999999999'。服务器收到良好。
之后,我发送较短的字符串:'7777777'。但服务器上的数据是'777777799'。TCP套接字编程,读数据时奇怪的行为
为什么之前的数据剩余量在下次发送时仍然存在?
我的代码如下:
// 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里面有旧数据! – Adil 2015-02-23 09:52:51
您确定服务器在第一次阅读时看到完整的“999999999”吗? – 2015-02-23 09:53:59