Я реализовал TCP-клиент для подключения к серверу с помощью TcpClient ( C # .NET 4 ):
// TCP client & Connection
TcpClient client = new TcpClient();
client.Connect(new IPEndPoint(IPAddress.Parse(IP), PORT));
NetworkStream clientStream = client.GetStream();
// Get message from remote server
byte[] incomingBuffer = new byte[1024];
Int32 bytes = clientStream.Read(incomingBuffer, 0, incomingBuffer.Length);
string problesWithThis = System.Text.Encoding.ASCII.GetString(incomingBuffer, 0, bytes);
Подключение к серверу работает хорошо. Но я могу прочитать только часть ответа с сервера, и недоставленная часть сообщения будет прочитана при следующей попытке подключения .
Я пытался установить время ожидания NetworkStream:
// No change for me
clientStream.ReadTimeout = 10000;
Затем я попытался смоделировать время ожидания:
// This works well, the client has enough time to read the answers. But it's not the right solution.
// ....
NetworkStream clientStream = client.GetStream();
Thread.Sleep(TimeSpan.FromSeconds(1));
// Read stream ....