Имам TCP сървър, който работи на localhost на 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);
}
Боб