У меня есть TCP-сервер, работающий на локальном хосте на vs2010 в Windows 2k8.
Когда я подключаю клиента к 127.0.0.1 с помощью vs2010, сервер получает вызов (я вижу это из отладки), поскольку сервер tcp выполняет обработчик протокола командной строки, но клиент получает ответ сервера, который является сеансом ключ, но блокируется на клиенте при чтении потока ответа.
Когда я использую Telnet для замыкания на себя для того же порта, отправляя ту же последовательность команд, ответ, то есть ключ сеанса, принимается мгновенно.
Вот код клиента:
EndPoint serverAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9121);
sing (Socket socket = new Socket(serverAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
{
socket.Connect(serverAddress);
var socketStream = new NetworkStream(socket);
var reader = new StreamReader(socketStream, Encoding.ASCII, false);
var writer = new StreamWriter(socketStream, Encoding.ASCII, 1024);
string charSource = Guid.NewGuid().ToString().Replace("-", string.Empty)
+ Guid.NewGuid().ToString().Replace("-", string.Empty)
+ Guid.NewGuid().ToString().Replace("-", string.Empty);
Random rd = new Random();
int startPos = rd.Next(0, charSource.Length - 2);
int endPos = rd.Next(startPos + 1, charSource.Length - 1);
var currentMessage = charSource.Substring(startPos, endPos - startPos + 1);
Console.WriteLine("Sent Command");
writer.Write("HEAR {0} {1}", currentMessage.Length.ToString().PadLeft(4, '0'), currentMessage);
writer.Flush();
Console.WriteLine("Reading Command Results");
var line = reader.ReadLine();
Console.WriteLine("Received: " + line);
}
Боб