2011-08-13 89 views
0

如果我有一個監聽端口80和8080的服務器(如下配置),當我收到消息時,如何識別客戶端連接的本地端口?Apache Mina:獲取遠程客戶端連接到的本地端口

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 

回答

1
+0

耶,這個作品!我曾嘗試session.getServiceAddress(),但它的一種陷阱,因爲它只返回集合中的第一個端口,在我的情況下總是80 –

+0

很高興聽到:) – MByD

相關問題