JAVA/Java Platform, Standard Edition
[공식 문서] 자바 서버 소켓(Server Socket) 완벽 정리 : 개념, 생성자, 주요 메소드
yebin0322
2025. 2. 12. 11:05
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() |
이 소켓의 구현 주소 및 포트를 문자열로 반환 |