Странные символы в текстовом поле после получения через сокет - PullRequest
1 голос
/ 12 ноября 2010

Я написал небольшие клиентские и серверные приложения tcp socket. Сервер отправляет текстовое сообщение клиенту.

Часть кода сервера:

new_sock.Send(Encoding.UTF8.GetBytes("efgh"));

Часть кода клиента:

 byte[] buffer = new byte[100];

 int count = sock.Receive(buffer);
 sock.Close();
 textBox_received.Text = Encoding.UTF8.GetString(buffer);

В приложении Windows Forms все в порядке, но в приложении WPF после полученного текста всегда появляются «прямоугольники»: alt text

В чем причина и что я могу сделать, чтобы избежать этого?

1 Ответ

3 голосов
/ 12 ноября 2010

Вы получаете строку из всего буфера в 100 байт, в то время как вы фактически получили только несколько.Вы должны делать Encoding.GetString только для байтов, которые вы фактически получили:

textBox_received.Text = Encoding.UTF8.GetString(buffer,0,count);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...