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'がメッセージに含まれているときにメッセージが終了したことを知ります。 –
これはテキストメッセージに適しています。バイナリメッセージは扱いにくいです。 – zmbq
あなたは正しいですが、彼のコードでは、受け取った結果を文字列に変換しているので、バイナリメッセージを送信しているのではないかと思います。おかげさまで –