0
我有一個java的nio服務器,IP地址192.168.0.1監聽端口80.我配置了這個服務器綁定到多個域名/主機名,比如說server1,server2,server3是全部解析爲192.168.0.1。Java服務器套接字綁定多個域/主機名
現在我希望如果客戶端連接到server1,在服務器端,我可以識別客戶端連接到server1而不是其他名稱或直接ip地址,以便我可以做一些特殊的事情,如果客戶端連接到server2,我可以識別出客戶端正在請求server2,所以我可以做其他特殊的事情,等等。
現在的問題是:似乎在服務器端,我不能很容易地得到正確的信息,我的客戶端連接到哪個服務器名稱。
我有如下代碼:
ServerSocketChannel ssChannel = (ServerSocketChannel) selKey.channel();
String boundHost = sChannel.socket().getLocalAddress().getHostName();
但它不工作,boundHost始終是即使客戶端連接到Server2或server(服務器)的服務器1。
謝謝fge回答。那麼Java,甚至C可以獲得這些信息嗎?其實我希望能夠製作一個TCP層多路複用器/代理。我知道Apache2有一個代理模塊,它實際上是通過協議來獲取這些信息。但我不想這樣做。我希望從上層協議中完全透明。 –
或者它在技術上絕對不可能?謝謝。 –