2017-11-13 1 views
0

SocketAddres가 무엇을 위해 설계되었는지 명확하지 않습니다. 내가 아는 한 InetSocketAddress를 통해 합리적으로 사용할 수있는 방법이 하나 있습니다. 혼란 스럽네. Documentation of SocketAddress에서Java의 SocketAddress와 InetAddress의 차이점

+2

당신이 읽었다의 InetAddress 및 포트 번호와 끝 지점에서 소켓을 생성하는 데 사용됩니다

InetAddress ip=InetAddress.getByName("www.google.com"); System.out.println("Host Name: "+ip.getHostName()); System.out.println("IP Address: "+ip.getHostAddress()); 

을 문서화 (및 관련 하위 클래스의 문서화) 문서의 어떤 부분을 이해하지 못했거나 혼란 스럽습니까? –

답변

1

:

이 클래스는 프로토콜이 설정되어 있지 않은 소켓 주소를 나타냅니다. abstract 클래스는 특정 프로토콜 의존적 인 구현으로 하위 클래스 화 (subclass) 될 수 있습니다. Documentation of InetAddress에서

:

이 클래스는 인터넷 프로토콜 (IP) 주소를 나타냅니다.

그래서 하나는 추상 클래스로 프로토콜이없는 소켓을 나타내고 다른 하나는 IP 주소를 나타냅니다. 가장 많이 찾고있는 것은 InetSocketAddress (특정 IP/호스트 이름과 포트에 바인딩 된 소켓)입니다.

0

SocketAdress

이 클래스는 프로토콜이 설정되어 있지 않은 소켓 주소를 나타냅니다. abstract 클래스는 특정 프로토콜 의존적 인 구현으로 하위 클래스 화 (subclass) 될 수 있습니다.

InetAdress

이 클래스는 인터넷 프로토콜 (IP) 주소를 나타냅니다.

아마 당신은 또한 한 쌍의 (호스트 명 + 포트 번호) 할 수 있습니다에 대한 InetSocketAddress

이 클래스는 IP 소켓 주소 (IP 주소 + 포트 번호)를 구현을 알고 싶은 경우에 호스트 이름을 분석하려고 시도합니다. 해결에 실패하면 주소는 해결되지 않았지만 프록시를 통한 연결과 같은 일부 상황에서는 계속 사용될 수 있습니다.

1

InetAddress를 지정된 웹 사이트의 IP 주소를 예를 줄 것이다 : SocketAdress이

InetAddress addr = InetAddress.getByName("www.google.com"); 
    int port = 80; 
    SocketAddress sockaddr = new InetSocketAddress(addr, port); 

    Socket sock = new Socket(); 

    sock.connect(sockaddr); 
관련 문제