2013-09-16 4 views
2

так что я в основном разрабатываю сетевую программу в C#, и я пытаюсь отправить строку с сервера клиенту с помощью потокового считывателя, но у меня очень странная проблема. Когда я использую этот код ...C# - проблема с чтением потока

[Server Side]

foreach (DataRow row in StocksTable.Rows) 
      { 
       stocks += row["description"] + "," + row["buy"] + "," + row["sell"] + ","; 
      } 

[Клиент]

textBox3.Text = streamReader.ReadLine(); 

... он работает, но он возвращает только первую строку. Когда я меняю «\ n» на «;» например, чтобы все было на одной строке, клиент сбой.

Я попытался использовать итератор для печати всех строк, но он не работает.

Я знаю, это звучит смешно и, вероятно, есть простое объяснение, но я некоторое время застрял на этом, и я смущаюсь.

EDIT:

Я попробовал и это итерации вещь работает:

for (int i = 0; i < 5; i++) 
      { 
       textBox3.Text += streamReader.ReadLine(); 
      } 

(5 это число строк в строке)

, но это не делает:

while (true) 
      { 
       string s = streamReader.ReadLine(); 
       if (s != null) 
       { 
        textBox3.Text += s; 
       } 
       else 
       { 
        break; 
       } 
      } 
+0

Можете ли вы предоставить больше кода? Какие классы вы используете? –

+0

Вы используете readline - \ n завершает линию. Если вы пройдете все строки, вы можете увидеть, что вам нужно. Мое предположение о сбое в том, что размер строки слишком большой для текстового поля? – JohnLBevan

+2

_the клиент crashes_ - каковы детали исключения? –

ответ

2

Я собираюсь предположить, что stocks - это строка. Строка может содержать много строк (строки, определенные как строка, ограниченная CR, LF или CRLF). В этом случае кажется, что вы создаете несколько строк в строке, используя \n. Там для:

textBox3.Text = streamReader.ReadLine(); 

прочтет первую линию в потоке.

2

Вы должны использовать StreamReader.ReadToEnd(), чтобы прочитать все строки. ReadNextLine будет читать только строку и останавливаться на знаке \n.

Если вы итерации, вы должны проверить, доступно ли еще содержимое.

Смежные вопросы