Сообщение Re[4]: Помогите понять причину ошибки (unable to write data от 23.06.2015 13:43
Изменено 23.06.2015 13:50 breee breee
Здравствуйте, v_andal, Вы писали:
_>>>Сервер когда читает, как определяет границы сообщений?
BB>>Все сообщения начинаются с фиксированной длины, затем идет переменное тело. Сервер сначала читает длину, затем само тело.
_>То есть у сервера только один поток?
Для каждого клиента свой поток. Вернее, все сделано через async/await и таски, поэтому в конечном счете используется пул потоков.
_>А сервер учитывает, что он может прочесть только кусок сообщения за раз? Потенциально, он и при записи может отправить только часть из отправляемых данных.
Да, это учитывается.
_>В принципе, если сообщения не очень большие, можно весь обмен каким-нибудь wireshark перехватить и посмотреть, что происходит на уровне сети. Если на этом уровне соединение не пропадает, то значит баг в библиотеке или программе.
Спасибо за попробую.
_>Если же соединение рубится на уровне сети, то значит клиент его почему-то закрывает.
Клиент тоже мой. Вроде никаких ошибок на его стороне не происходит.
_>>>Сервер когда читает, как определяет границы сообщений?
BB>>Все сообщения начинаются с фиксированной длины, затем идет переменное тело. Сервер сначала читает длину, затем само тело.
_>То есть у сервера только один поток?
Для каждого клиента свой поток. Вернее, все сделано через async/await и таски, поэтому в конечном счете используется пул потоков.
_>А сервер учитывает, что он может прочесть только кусок сообщения за раз? Потенциально, он и при записи может отправить только часть из отправляемых данных.
Да, это учитывается.
_>В принципе, если сообщения не очень большие, можно весь обмен каким-нибудь wireshark перехватить и посмотреть, что происходит на уровне сети. Если на этом уровне соединение не пропадает, то значит баг в библиотеке или программе.
Спасибо за попробую.
_>Если же соединение рубится на уровне сети, то значит клиент его почему-то закрывает.
Клиент тоже мой. Вроде никаких ошибок на его стороне не происходит.
Re[4]: Помогите понять причину ошибки (unable to write data
Здравствуйте, v_andal, Вы писали:
_>>>Сервер когда читает, как определяет границы сообщений?
BB>>Все сообщения начинаются с фиксированной длины, затем идет переменное тело. Сервер сначала читает длину, затем само тело.
_>То есть у сервера только один поток?
Для каждого клиента свой поток. Вернее, все сделано через async/await и таски, поэтому в конечном счете используется пул потоков. Но ошибку я получаю при тестировании с одним клиентом, поэтому в принципе можно считать, что поток один.
_>А сервер учитывает, что он может прочесть только кусок сообщения за раз? Потенциально, он и при записи может отправить только часть из отправляемых данных.
Да, это учитывается.
_>В принципе, если сообщения не очень большие, можно весь обмен каким-нибудь wireshark перехватить и посмотреть, что происходит на уровне сети. Если на этом уровне соединение не пропадает, то значит баг в библиотеке или программе.
Спасибо за попробую.
_>Если же соединение рубится на уровне сети, то значит клиент его почему-то закрывает.
Клиент тоже мой. Вроде никаких ошибок на его стороне не происходит.
_>>>Сервер когда читает, как определяет границы сообщений?
BB>>Все сообщения начинаются с фиксированной длины, затем идет переменное тело. Сервер сначала читает длину, затем само тело.
_>То есть у сервера только один поток?
Для каждого клиента свой поток. Вернее, все сделано через async/await и таски, поэтому в конечном счете используется пул потоков. Но ошибку я получаю при тестировании с одним клиентом, поэтому в принципе можно считать, что поток один.
_>А сервер учитывает, что он может прочесть только кусок сообщения за раз? Потенциально, он и при записи может отправить только часть из отправляемых данных.
Да, это учитывается.
_>В принципе, если сообщения не очень большие, можно весь обмен каким-нибудь wireshark перехватить и посмотреть, что происходит на уровне сети. Если на этом уровне соединение не пропадает, то значит баг в библиотеке или программе.
Спасибо за попробую.
_>Если же соединение рубится на уровне сети, то значит клиент его почему-то закрывает.
Клиент тоже мой. Вроде никаких ошибок на его стороне не происходит.