기존 서버 솔루션에 요청을 보내고 결과를 쓰려고합니다. 서버가 특정 요청으로 총 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();
}
에릭 (Eric)이 말한대로 나를 에워 쌌습니다. – MarcF
몇 바이트를 보내고 있습니까? totalBytesReceived를 Read()에 대한 오프셋으로 전달하므로 배열 크기로 지정한 1024 바이트를 초과하여 읽을 수 없습니다. –
1024는 서버 측에서 하드 코딩 된 최대 크기입니다. –