0
我有以下代碼:TCPClient。我如何收到大消息?
private string Connect()
{
string responseData;
try
{
TcpClient client = new TcpClient(ServerIp, Port);
client.ReceiveBufferSize = Int32.MaxValue;
Byte[] data = Encoding.GetEncoding(1251).GetBytes(ReadyQuery);
NetworkStream stream = client.GetStream();
// send data
stream.Write(data, 0, data.Length);
// buffer
data = new Byte[65536];
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = Encoding.GetEncoding(1251).GetString(data, 0, bytes);
// close all
stream.Close();
client.Close();
return responseData;
}
我有問題,一個大的消息。接收郵件的大小是22K字符。我只獲得了部分信息。
我怎樣才能收到大消息?
PS。在調試器bytes
等於4096
。
作爲補充:如果您事先不知道消息大小,那麼使用一些「消息終止符」總是一個好主意。例如,您可能會在末尾附加一個「ETX」字符,以便客戶端知道當消息中包含「ETX」時,該消息將結束。 – 2012-03-13 09:27:16
這對文本消息很有用。二進制消息更棘手。 – zmbq 2012-03-13 09:28:46
你是對的 - 但在他的代碼中,他將收到的結果轉換爲字符串,所以我懷疑他發送的是二進制消息。 – 2012-03-13 09:55:01