Netty — инициирование нового соединения с тем же адресом прослушивания, что и связанный канал сервера

У меня есть связанный канал сервера, который в настоящее время принимает соединения по локальному адресу «x». Теперь мне нужно инициировать соединение с удаленным адресом «y», но мне также нужно, чтобы мой локальный адрес прослушивания был «x». При работе с фабрикой локальных каналов и локальными адресами я получаю сообщение об ошибке «адрес уже привязан» при попытке установить новое клиентское соединение с локальным адресом = «x». Это имеет смысл.

Итак, мой следующий маршрут заключался в попытке найти способ создать новое дочернее соединение из канала сервера, но это закончилось слишком глубоким внутренним кодом netty и показалось плохим путем. Я помню, что ранее видел ошибку, связанную с локальными клиентскими подключениями.

  • Это просто баг с местными каналами?
  • Возможна ли в Netty инициация соединения с привязанного адреса?

Спасибо, Даниэль


person Daniel Murphy    schedule 07.05.2012    source источник


Ответы (1)


Ты пишешь прокси? Если да, то вот пример netty приложение.

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

    // Configure the bootstrap.
    Executor executor = Executors.newCachedThreadPool();
    ServerBootstrap sb = new ServerBootstrap(
            new NioServerSocketChannelFactory(executor));

    // Set up the event pipeline factory.
    ClientSocketChannelFactory cf =
            new NioClientSocketChannelFactory(executor);
person Veebs    schedule 07.05.2012
comment
Нет, я не пишу прокси, моя проблема в том, что мой локальный адрес прослушивания для нового соединения совпадает с привязанным адресом прослушивания для канала сервера. В примере это не так. - person Daniel Murphy; 07.05.2012