JAVA/Java Platform, Standard Edition

[공식 문서] 자바 서버 소켓(Server Socket) 완벽 정리 : 개념, 생성자, 주요 메소드

yebin0322 2025. 2. 12. 11:05
반응형

https://docs.oracle.com/javase/8/docs/api/java/net/ServerSocket.html

ServerSocket(서버 소켓)

  • 서버 소켓을 구현하는 Java 네트워크 프로그래밍 클래스
  • 네트워크에서 들어오는 요청을 기다리고, 요청을 처리한 후 결과를 요청자에게 반환하는 역할
  • SocketImpl 클래스의 인스턴스를 사용하여 실제 작업 수행
  • 애플리케이션에서 소켓 구현을 구성하기 위해 소켓 팩토리를 변경할 수 있음

용어

  • backlog(백로그) : 서버 소켓이 클라이언트의 연결 요청을 얼마나 대기할 수 있는지를 나타내는 값. 서버가 한 번에 처리할 수 없는 연결 요청이 있을 때, 그 요청들을 대기열에 쌓아 두는 개념. 대기할 수 있는 최대 연결 수를 지정하며, 백로그가 50이면 서버는 최대 50개의 연결 요청을 대기시킬 수 있는 것

Constructor(생성자)

생성자 설명
ServerSocket() 연결되지 않은 서버 소켓을 생성
ServerSocket(int port) 지정된 포트에 바인딩된 서버 소켓을 생성
ServerSocket(int port, int backlog) 지정된 로컬 포트 번호에 바인딩된 서버 소켓을 생성하며, 지정된 백로그를 설정
ServerSocket(int port, int backlog, InetAddress bindAddr) 지정된 포트, 백로그, 로컬 IP 주소에 바인딩된 서버 소켓을 생성

Method(메소드)

연결 및 바인딩

메소드 설명
accept() 이 소켓에 대한 연결을 기다리고 이를 수락
bind(SocketAddress endpoint) 특정 주소(IP와 포트)에 서버 소켓을 바인딩
bind(SocketAddress endpoint, int backlog) 특정 주소에 서버 소켓을 바인딩하고 백로그를 설정
close() 서버 소켓을 닫음

소켓 정보 조회

메소드 설명
getChannel() 이 소켓과 연결된 유일한 ServerSocketChannel 객체 반환
getInetAddress() 서버 소켓의 로컬 주소 반환
getLocalPort() 이 소켓이 수신하는 포트 번호 반환
getLocalSocketAddress() 이 소켓이 바인딩된 주소 반환
getReceiveBufferSize() SO_RCVBUF 옵션의 값을 반환(이 서버 소켓에서 수락된 소켓에 사용될 버퍼 크기)
getReuseAddress() SO_REUSEADDR 옵션이 활성화되었는지 여부를 반환
getSoTimeout() SO_TIMEOUT 설정값을 반환

소켓 설정 및 옵션

메소드 설명
setPerformancePerferences(int connectionTime, int latency, int bandwidth) 이 서버 소켓의 성능 설정
setReceiveBufferSize(int size) 이 서버 소켓에서 수락된 소켓의 기본 제안 수신 버퍼 크기 설정
setReuseAddress(boolean on) SO_REUSEADDR 소켓 옵션을 활성화/비활성화
setSocketFactory(SocketImplFactory fac) 애플리케이션의 서버 소켓 구현 팩토리 설정
setSoTimeout(int timeout) SO_TIMEOUT을 지정된 시간(밀리초 단위)으로 설정

소켓 상태 확인

메소드 설명
isBound() 서버 소켓이 바인딩되었는지 여부를 반환
isClosed() 서버 소켓이 닫혔는지 여부를 반환

기타

메소드 설명
toString() 이 소켓의 구현 주소 및 포트를 문자열로 반환
반응형