我正在嘗試向現有服務器解決方案發送請求並寫出結果。服務器總共發送了4條包含我的特定請求的消息,但返回的消息數量可能因初始查詢而異。TCP客戶端讀取第一條消息但不是其餘
我能夠成功發送查詢到服務器,但是當涉及到讀取響應我只能讀取一條消息。服務器日誌顯示4個已發回。
請幫忙。
IPHostEntry hostEntry = Dns.GetHostEntry(server_textbox.Text);
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], port);
string data = String.Empty;
testclient = new TcpClient(server_textbox.Text, port);
testclient.ReceiveBufferSize = 1024;
testclient.SendBufferSize = 1024;
NetworkStream netStream = testclient.GetStream();
Byte[] message_byte = new System.Text.ASCIIEncoding().GetBytes(msg2);
netStream.Write(message_byte, 0, message_byte.Length);
Byte[] returnMessage = new byte[1024];
Int32 totalBytesReceived = 0;
Int32 bytesReceived = 0;
try
{
while ((bytesReceived = netStream.Read(returnMessage, totalBytesReceived, returnMessage.Length)) > 0)
{
totalBytesReceived += bytesReceived;
data += "\n" + ASCIIEncoding.ASCII.GetString(returnMessage);
bytesReceived = 0;
}
}
catch (Exception error)
{
MessageBox.Show(error.ToString());
}
result_box.Text += data;
netStream.Close();
testclient.Close();
}
埃裏克打敗了我,他說了什麼。 – MarcF 2013-02-12 16:56:34
你發送多少個字節?因爲您將totalBytesReceived傳遞爲Read()的偏移量,所以您將無法讀取超過指定爲數組大小的1024個字節。 – 2013-02-12 17:00:06
1024是我可以在服務器端接收硬編碼的最大尺寸。 – 2013-02-12 17:01:38