Проблема с собственным TCPServer - PullRequest
0 голосов
/ 08 сентября 2010

Я написал 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);
        }
    }

Текст на русском языке. Если текст на английском, то ОК. В чем проблема, может быть кодовая страница? Спасибо и извините за мой плохой английский.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

ASCIIEncoding не будет работать с русским языком. Используйте UTF8Encoding или UTF32Encoding (я не уверен, какой из них работает с русским языком).

0 голосов
/ 08 сентября 2010

Может быть netcat дает лучшие результаты.Он меньше интерпретирует возвращаемые данные, чем telnet.

...