CODEDRAGON ㆍDevelopment/Java
ServerSocket 정보
서버 소켓에 의해 사용 중인 로컬 주소(getInetAddress)와 포트(getLocalPort)를 알려주는 두 가지 get 메서드 제공하는데 이 두 메소드는 네트워크 인터페이스를 명시하지 않았거나 익명 포트를 사용하여 서버 소켓을 생성한 경우 유용하게 사용됩니다.
로컬 호스트가 하나 이상의 IP 주소를 가지고 있는 경우
호스트의 IP 주소 중 하나가 반환됩니다.
어떤 주소가 반환될지 예측할 수 없는 경우
InetAddress 클래스를 이용하면 도메인 주소와 IP주소를 알아낼 수 있는데 ServerSocket 의 getInetAddress()메소드를 이용하면 IP주소를 확인 할 수 있습니다.
ServerSocket httpd = new ServerSocket(80); InetAddress ia = httpd.getInetAddress(); |
서버 소켓이 네트워크 인터페이스에 아직 연결되지 않은 경우
getInetAddress()메소드는 null을 반환합니다.
서버 소켓 생성자의 포트 번호로 0번을 전달한 경우
서버 소켓 생성자의 포트 번호로 0번을 전달하면 익명의 포트 번호로 대기하게 되고 이 메소드를 사용하면 실제 대기 중인 포트 번호를 확인 할 수 있습니다.
ServerSocket 메서드는 여러분의 위치를 다른 동료에게 알기 위한 수단으로 P2P멀티 소켓 프로그램에서 사용하거나, 서버가 특정 연산을 수행하기 위한 몇몇 하위 서버들을 실행한 경우 상위 서버가 클라이언트에게 몇 번 포트를 통해 하위 서버들을 찾을 수 있는지 알려주는 경우에 사용가능합니다.
아래는 getLocalPort()메소드를 사용하여 연결된 소켓이 사용하는 포트를 넘겨주는 코드입니다.
try{ ServerSocket server = new ServerSocket(0); System.out.println("This server runs on port " + server.getLocalPort()); } catch (IOException ex) { System.err.println(ex); } |
getLocalPort()
서버의 포트를 알 수 있는 메서드입니다.
public int getLocalPort(); |
setSoTimeout(int timeout)
accept() 메서드의 시간을 설정할 수 있는 메서드입니다.
public void setSoTimeout(int timeout) throws SocketException; |
getSoTimeout()
accept() 메서드의 시간을 알 수 있는 메서드입니다.
0이 반환되면 accept() 메서드의 유효시간은 무한대를 의미합니다.
public int getSoTimeout() throws IOException; |
'Development > Java' 카테고리의 다른 글
URLConnection클래스의 필드 - 연결 설정하기, URLConnection클래스의 protected instance field (0) | 2017.10.27 |
---|---|
URLConnection 클래스의 주요 메서드 (0) | 2017.10.27 |
ServerSocket 클래스의 주요 메서드, ServerSocket 연결받기 (0) | 2017.10.27 |
소켓을 이용한 입출력 스트림 생성, 소켓정보, 소켓 종료 (0) | 2017.10.27 |
소켓 옵션 설정(클라이언트 측 소켓에 제공하는 옵션) - TCP_NODELAY, SO_LINGER, SO_TIMEOUT, SO_RCVBUF, SO_SNDBUF, SO_KEEPALIVE, SO_OOBINLINE, SO_REUSEADDR, IP_TOS (0) | 2017.10.27 |