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