2009-12-03 76 views
20

我的客戶端PC通過以太網套接字連接到服務器PC,如何從服務器端代碼找到此客戶端的IP。
服務器在新線程中爲每個客戶端分配一個套接字。
當我在客戶端套接字上執行csocket.getLocalAddress().toString()時,我仍然獲得服務器IP地址。 (csocket是服務器在現在的客戶端連接上生成並將其傳遞給新線程的套接字)。如何找到連接到服務器的客戶端的IP地址?

回答

42

我相信你想使用的,而不是remote address

csocket.getRemoteSocketAddress().toString(); 
+0

如何從HttpServer對象獲取客戶端IP?看到這裏:http://stackoverflow.com/questions/25274828/get-client-ip-from-httpserver – 2014-08-12 22:05:43

12

我想你可能在尋找Socket對象的getInetAddress方法。

+0

,使該插座的本地地址。服務器需要從其角度來查找遠程地址。 – 2009-12-03 15:24:52

+11

@Stephen:根據Javadoc,'getInetAddress()'「返回此套接字所連接的遠程IP地址;如果套接字未連接,則返回null。 – erickson 2009-12-03 15:30:08

1

使用此代碼:

String ip=(((InetSocketAddress) socket.getRemoteSocketAddress()).getAddress()).toString().replace("/",""); 
相關問題