首页 > 解决方案 > StreamWriter 不写入网络流,但 StreamReader 可以在 C# 中成功读取?

问题描述

这是我目前的代码:

        static IPAddress ipAddr = IPAddress.Parse("MYIPADRESSGOESHERE");
        static IPEndPoint localEndPoint = new IPEndPoint(ipAddr, 88);
        static Socket Server = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

        static void Main(string[] args)
        {
            Server.Bind(localEndPoint);
            Server.Listen(10);
            while (true)
            {
                Console.WriteLine("Ready");
                Socket clientSocket = Server.Accept();
                NetworkStream networkStream = new NetworkStream(clientSocket);
                StreamReader streamReader = new StreamReader(networkStream);
                StreamWriter streamWriter = new StreamWriter(networkStream);
                string line = streamReader.ReadLine();
                while (line != "STOP")
                {

                    Console.WriteLine("Client says: " + line);
                    switch (line)
                    {
                        case "START":
                            streamWriter.WriteLine("WELCOME");
                            Console.WriteLine("here");
                            break;
                        case "DATA":

                            break;
                    }
                    line = streamReader.ReadLine();
                }
                Console.WriteLine("Client disconnected");
            }
        }

我使用 telnet 作为客户端。连接已正确建立。从 telnet 发送任何内容都会在服务器控制台上回显“客户端说:”。发送“STOP”会断开服务器。但是,当我发送“START”时,我可以在服务器控制台上看到“here”,但在客户端控制台 (telnet) 上没有得到响应。

我的假设是 StreamWriter 有问题,无论是在声明中还是在 WriteLine 方法的调用中。我不知道如何解决这个问题。

标签: c#socketsnetworkingclient-server

解决方案


推荐阅读