-
Notifications
You must be signed in to change notification settings - Fork 0
Java Server Socket API
ServerSocket의 클래스는 서버 프로그램을 구현하는데 사용된다. 일반적인 서버의 프로그램의 과정은 Step1 ~ Step6으로 나눌 수 있다.
- step1: 서버 소켓 생성, 포트 바인딩
- step2: 클라이언트로부터 연결을 기다리고, 요청이 오면 수락
- step3: 클라이언트 소켓에서 가져온 InputStream(클라이언트 쪽에서는 OutputStream)을 읽음
- step4: 응답이 있다면 OutputStream을 통해 클라이언트에 데이터를 보냄
- step5: 클라이언트와의 연결을 닫음
- step6: 서버 종료
다음 생성자 중 하나를 사용하여 ServerSocket 객체를 만든다.
ServerSocket(int port)
: 지정된 포트 번호에 바인딩 된 서버 소켓을 만듬 (연결 대기열 최대 수(backlog): 50)
ServerSocket(int port, int backlog)
: backlog개수를 원하는 값으로 설정 가능
ServerSocket(int port, int backlog, InetAddress bindAddr)
: 서버 소켓을 만들고 지정된 포트 번호와 로컬 ip주소에 바인딩
ServerSocket serverSocket = new ServerSocket(8000);
(I/O Exception이 일어 날 수 있음)
Socket socket = serverSocket.accept();
요청이 안들어와있으며 block상태로 대기한다. 요청이 들어오면 포트가 다른, 클라이언트와 연결된 일반 소켓 객체를 한개 만든다.
InputStream input = socket.getInputStream();
BufferedReader br = new BufferedReader(input)
String line = br.readLine();
Socket과 연결 된 클라이언트에게 OutputStream을 사용하여 데이터를 보낸다.
OutputStream output = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos에 데이터를 write하여 응답을 보낸다. (꼭 DataOutputStream을 사용해야하는 것은 아니다.)
socket.close();
serverSocket.close();
https://woolbro.tistory.com/29
https://velog.io/@duck-ach/23.-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%8A%A4%ED%8A%B8%EB%A6%BC-InputStream-OutputStream-JAVA
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=highkrs&logNo=220474124970