Не удается правильно получить текст через TCP - PullRequest
0 голосов
/ 06 июля 2018

Я знаю, что мой заголовок не очень хороший, но я не знал, как написать эту проблему. Я получаю XML через TCP-соединение, но проблема в том, что строка заполнена "\ 0", поэтому я не вижу сообщения, когда использую эту строковую переменную. Я могу сделать string.length и увидеть, что он заполнен, но не может добраться до текста. Я пытался заменить метод, и он работал, но я знаю, что это не правильное решение. Итак, вот мой вопрос, как я могу правильно получить текст?

TcpListener tcpListener = new TcpListener(Convert.ToInt16(_Port));
tcpListener.Start();

while (true)
{
    Socket handlerSocket = tcpListener.AcceptSocket();
    if (handlerSocket.Connected)
    {
        Control.CheckForIllegalCrossThreadCalls = false;

        NetworkStream networkStream = new NetworkStream(handlerSocket);
        byte[] myReadBuffer = new byte[102400000];
        int numberOfBytesRead = 0;

        string myCompleteMessage = "";

        do
        {
            numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
            myCompleteMessage += Encoding.UTF8.GetString(myReadBuffer,
        }
        while (networkStream.DataAvailable);

        Console.WriteLine("Text: "+myCompleteMessage);

    }
}

Я пытался изменить Encoding.UTF8 на Encoding.ASCII и Encoding.UNICODE, но это не сработало.

Обновление: моя проблема все еще продолжается, данные, которые я получаю, имеют "\ 0" перед каждым символом. Я не могу найти почему .. Я использую замену и вставляю \ 0 снова, как только я хочу отправить данные обратно. Может ли это быть из-за какой-то кодировки? Я также пробовал getEncodings и пробовал много кодовых страниц, но они не работают

1 Ответ

0 голосов
/ 17 июля 2018

Оказывается, все "\ 0" внутри моей строки были, потому что данные, которые я получаю, были закодированы с помощью BigEndian .. когда я использовал

myCompleteMessage += Encoding.BigEndianUnicode.GetString(myReadBuffer, 0, numberOfBytesRead);

все работало хорошо. Хотел поделиться этим здесь на случай, если кто-то получит такую ​​же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...