C # бинарный писатель начало и конец строки - PullRequest
0 голосов
/ 26 февраля 2019

Я отправляю большую строку 0.443+0.064+-0.120+-0.886+0.15167+-0.26754+0.95153 через TCP-сокет-соединение.

Полученное сообщение не похоже на строку, которую я отправляю.Он обрезается в случайных точках, например 43+0.064+-0.120+-0.886+0.15167+-0.26754+0

Как я могу убедиться, что вся строка прочитана?

Это код клиента:

public static void SendMessage(string message)
{
   if (socketConnection == null)
      {
        return;
      }
   using (BinaryWriter writer = new
   BinaryWriter(socketConnection.GetStream(), Encoding.ASCII, true))
      {
         writer.Flush();
         writer.Write(message);
         writer.Flush();
       }
}

Этомой серверный код:

private void ListenForIncommingRequests()
{
     tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 8080);
     tcpListener.Start();
     connectedTcpClient = tcpListener.AcceptTcpClient();

     using (BinaryReader reader = new 
     BinaryReader(connectedTcpClient.GetStream()))
     {                   
         while (true)
          {
            string clientMessage = reader.ReadString();
          }
     }
}

1 Ответ

0 голосов
/ 26 февраля 2019

Как отметили @ NineBerry в комментариях, вы пишете байты в кодировке ASCII, но читаете кодированные байты по умолчанию (Unicode (UTF-16)).Убедитесь, что вы используете одну и ту же кодировку на обоих концах, я бы порекомендовал использовать Unicode, поэтому либо удалите Encoding.ASCII при создании экземпляра BinaryWriter, либо используйте Encoding.Unicode при создании экземпляра BinaryWriter И BinaryReader

...