событие попало не к тому сотруднику NIO - PullRequest
0 голосов
/ 08 сентября 2011

Я запускаю клиент-роутер-сервер scenaqrio с протоколом UDP с Netty (версия 3.2.3)

я вижу, что клиентские и серверные каналы нормально зарегистрированы у сотрудников NIO, но ответ, который возвращается с сервера, назначается не тому работнику, (NIODatagramWorker), поэтому это другой селектор, и сообщение попадает в неправильный конвейер (как если бы оно пришло от клиента).

пожалуйста, сообщите, Яир

1 Ответ

0 голосов
/ 08 сентября 2011

Netty UDP немного сложнее.На самом деле UDP имеет только один конвейер, поэтому, если вы измените селектор или обработчики внутри конвейера, это может не оказать желаемого влияния.Взгляните на эту UDP Woe link в группе пользователей Netty, в которой есть объяснения этого поведения от Trustin Lee.

Итак, ваш общий случай при использовании UDP будет1) создать единую конвейерную фабрику и конвейер с вашими декодерами и кодерами.2) Используйте хэш-карту или аналогичную структуру данных для поиска и маршрутизации входящих данных в нужный сеанс.3) При обратной записи используйте метод write (data, remoteSocketAddress) вместо обычного метода записи канала.

...