Задать вопрос
@Senture

Как исправить System.IO.EndOfStreamException: «Чтение после конца потока невозможно.» в MemoryStream?

Приветствую, мне требуется ваша помощь, уже не знаю, что делать, весь интернет перерыл, и всем помогает Position = 0,а мне нет.

private static byte[] buffer = new byte[1024];
    private static MemoryStream stream = new MemoryStream(buffer);
    private static BinaryWriter writer = new BinaryWriter(stream);
    private static BinaryReader reader = new BinaryReader(stream);

    private List<string> listCode = new List<string>();

void ReceiveData()
    {
        int bytes = 0;

        EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);
        listCode.Clear();

        do
        {
            bytes = socket.ReceiveFrom(buffer, ref remoteIp);
        }
        while (socket.Available > 0);


        bool getData = true;

        stream.Position = 0;

        try
        {
            while (getData)
            {
                string data = reader.ReadString(); // ВОТ ТУТ КОД ВЫДАЕТ ИСКЛЮЧЕНИЕ ПОСЛЕ ТОГО КАК ДАННЫЕ С СЕРВЕРА ПРИХОДЯТ 2-ОЙ РАЗ
                if (data != "")
                    listCode.Add(data);
                else
                    getData = false;
            }
        }
        catch(Exception ex)
        {
            Debug.Log(ex.Message);
        }

        stream.SetLength(0);
        stream.Position = 0;

        IPEndPoint remoteFullIP = remoteIp as IPEndPoint;
    }


Подскажите пожалуйста! Всем спасибо!
  • Вопрос задан
  • 2860 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@none7
while(reader.Position != reader.Length) // должно работать

Для ReadString() возврат пустой строки, вполне вменяемое поведение.

Например, если бы считывался этот комментарий, то Ваш код не дошёл бы до этой строчки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы