Apache Mina: получить локальный порт, к которому подключен удаленный клиент

Если у меня есть сервер, прослушивающий порты 80 и 8080, как настроено ниже, как я смогу определить, к какому локальному порту подключен клиент, когда я получаю сообщение?

acceptor = new NioSocketAcceptor();
acceptor.setHandler(new MyConnectionHandler());
Set<SocketAddress> addresses = new HashSet<SocketAddress>();
addresses.add(new InetSocketAddress(host, 80));
addresses.add(new InetSocketAddress(host, 8080));
acceptor.bind(addresses);

Обработчик messageReceived Я хочу знать, к какому локальному порту подключен клиент, а не к удаленному порту клиента.

@Override
public void messageReceived(IoSession session, Object message) throws Exception {
    log.info("Incomming: {}", session.getRemoteAddress().toString());

Какой метод я должен использовать для доступа к порту, который должен быть 80 или 8080? Оператор журнала напечатает что-то вроде этого:

    Incomming: /219.182.172.12:37921

person Paul Gregoire    schedule 13.08.2011    source источник


Ответы (1)


session.getLocalAddress()

person MByD    schedule 13.08.2011
comment
Ура, это работает! Я пробовал session.getServiceAddress(), но это своего рода ошибка, поскольку он возвращает только первый порт в наборе, который в моем случае всегда был 80 - person Paul Gregoire; 13.08.2011