Re[3]: Помогите понять причину ошибки (unable to write data
От: v_andal Германия  
Дата: 22.06.15 14:04
Оценка: 4 (1)
Здравствуйте, breee breee, Вы писали:

BB>Здравствуйте, v_andal, Вы писали:


_>>Хотелось бы знать, как происходит отправка и чтение данных в клиенте? Сообщение отправить, сообщение прочесть? Или отправить 100 сообщений, читать ответы по мере поступления?

BB>У клиента есть два потока: в одном сообщения отправляются в цикле, в другом — читаются, тоже в цикле. Согласно документации NetworkStream — это допустимо.

_>>Сервер когда читает, как определяет границы сообщений?

BB>Все сообщения начинаются с фиксированной длины, затем идет переменное тело. Сервер сначала читает длину, затем само тело.

То есть у сервера только один поток? А сервер учитывает, что он может прочесть только кусок сообщения за раз? Потенциально, он и при записи может отправить только часть из отправляемых данных.

В принципе, если сообщения не очень большие, можно весь обмен каким-нибудь wireshark перехватить и посмотреть, что происходит на уровне сети. Если на этом уровне соединение не пропадает, то значит баг в библиотеке или программе. Если же соединение рубится на уровне сети, то значит клиент его почему-то закрывает.
Если бы дело было под никсами, то я бы порекомендовал подцепить strace и посмотреть на уровне системных вызовов. Есть ли подобная утилита для виндов, я не знаю.
Отредактировано 22.06.2015 14:05 v_andal . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.