TCP客户端在环回上未接收到响应

本文关键字:响应 客户端 TCP | 更新日期: 2023-09-27 18:25:53

我在windows 2k8上的vs2010上安装了一台TCP服务器,并在本地主机上运行。

当我使用vs2010连接127.0.0.1上的客户端时,服务器会收到调用,(我可以看到来自调试),因为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);
            }

Bob

TCP客户端在环回上未接收到响应

要实现这一点,请更改Write with WriteLine,如下代码所示:

 Console.WriteLine("Sent Command");
 writer.WriteLine("HEAR {0} {1}", currentMessage.Length.ToString().PadLeft(4, '0'), currentMessage);
 writer.Flush();

启用网络跟踪,这样您就可以确保数据是混合的。可能是这样,所以把你的电话改成读者。反复阅读,直到找到信息的末尾。