【问题标题】:Problem with own TCPServer自己的 TCPServer 有问题
【发布时间】:2011-04-09 14:01:02
【问题描述】:

我写了一个 TCP 服务器。然后我尝试使用 Telnet(telnet localhost 2200)连接到我的服务器。 问题:telnet 写入错误的文本 - 像这样:? ?????...

static void Main(string[] args)
    {
        ASCIIEncoding encoding = new ASCIIEncoding();
        //UnicodeEncoding encoding = new UnicodeEncoding();
        Byte[] message = encoding.GetBytes("Я занят...");

        try
        {
            IPAddress localAddress = IPAddress.Parse("127.0.0.1");
            TcpListener listener = new TcpListener(localAddress,2200);

            listener.Start(1);

            while (true)
            {
                Console.WriteLine("Сервер ожидает {0}", listener.LocalEndpoint);
                TcpClient client = listener.AcceptTcpClient();

                NetworkStream io = client.GetStream();
                Console.WriteLine("Принято соединение от {0}", client.Client.RemoteEndPoint);

                Console.WriteLine("Отправляем сообщение...");
                io.Write(message,0,message.Length);

                Console.WriteLine("Закрытие соединения");
                client.Close();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Произошла ошибка {0}", e.Message);
        }
    }

俄语文本。如果文本是英语,则可以。 什么问题,可能是代码页?感谢和抱歉我的英语不好。

【问题讨论】:

    标签: c# tcp telnet


    【解决方案1】:

    ASCIIEncoding 不适用于俄语。使用 UTF8Encoding 或 UTF32Encoding(我不确定哪个适用于俄语)。

    【讨论】:

    • 我在 UTF32Encoding 上更改了 ASCIIEncoding,但文本又变坏了:/♦ 7♦0♦=♦O♦B♦...
    • 你在哪里输出文本?您还需要在那里指定编码。
    • 我在标准 Windows telnet 客户端中通过命令提示符启动了输出。
    • 那么标准的telentclient不支持UTF。 Putty (putty.org) 支持 UTF-8
    【解决方案2】:

    也许netcat 会提供更好的结果。它对返回数据的解释比 telnet 少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 2021-12-19
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多