Другие примеры показали вам, как обрезать строку, но было бы лучше не получать «плохие» данные для начала.
Мой думаю , что у вас есть такой код:
// Bad code
byte[] data = new byte[8192];
stream.Read(data, 0, data.Length);
string text = Encoding.ASCII.GetString(data);
Это игнорирует возвращаемое значение Stream.Read
. Ваш код должен выглядеть примерно так:
// Better code
byte[] data = new byte[8192];
int bytesRead = stream.Read(data, 0, data.Length);
string text = Encoding.ASCII.GetString(data, 0, bytesRead);
Обратите внимание, что вам следует также проверить, был ли поток закрыт, и не предполагать, что вы сможете прочитать все данные за один вызов Read
или этот один вызов Write
на другом конце соответствует одному вызову Read
.
Конечно, вполне возможно, что это совсем не так, но вы должны действительно проверить, является ли другой конец попыткой отправить эти дополнительные "нулевые" байты в конце данных. Это звучит маловероятно для меня.