2009-12-03 1 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 –

12

Socket 개체의 getInetAddress 메서드를 찾고있을 수도 있습니다.

+0

합니다. 서버는 원근감에서 원격 주소를 찾아야합니다. –

+11

@Stephen : Javadoc에 따르면, getInetAddress()는이 소켓이 연결된 원격 IP 주소를 반환하거나 소켓이 연결되어 있지 않으면 null을 반환합니다. – erickson

1

사용이 코드 : 소켓의 로컬 주소를 제공

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