2.소켓 통신 절차
소켓을 활용한 통신 절차는 다음과 같음

클라이언트 - 서버 간 네트워크 통신을 위한 기본적인 절차는 다음과 같음
A. 서버의 역할, Server.java
a. Socket, 소켓 객체 생성
서버는 서버용도의 소켓 객체인 ServerSocket을 생성
Server.java
ServerSocket serverSocket = new ServerSocket();b. Bind, 포트 바인딩
소켓을 생성하면서 생성자의 인수로 포트 번호를 바인딩
Server.java
final int PORT = 5555;
ServerSocket serverSocket = new ServerSocket(PORT);c. Listen, 클라이언트의 요청에 대한 수신 대기
클라이언트의 연결 요청이 올 때까지 대기,
클라이언트의 연결이 올 때까지 스레드는 차단됨(Blocked)
→ 클라이언트가 연결되어야 “클라이언트가 연결되었습니다” 가 출력 됨
Server.java
Socket clientSocket = serverSocket.accept();
System.out.println("클라이언트가 연결되었습니다: " + clientSocket.getInetAddress());B. 클라이언트의 역할, Client.java
a. Socket, 소켓 생성
클라이언트 역시 서버와의 연결에 활용될 소켓 객체(Socket) 생성
Server.java
final String SERVER_IP = "127.0.0.1";
final int SERVER_PORT = 5555;
Socket socket = new Socket(SERVER_IP, SERVER_PORT);b. Connect, 서버에 연결
소켓 객체가 생성되면서 서버에 연결됨
Server.java
Socket socket = new Socket(SERVER_IP, SERVER_PORT);
System.out.println("서버에 연결되었습니다");이후 read(), write()를 통한 소켓 통신 과정 수행
2. 현재 프로그램 구조
현재 구현한 소켓 기반의 서버 - 클라이언트 프로그램은 일대일 연결(1:1) 구조로,
서버는 하나의 단일 클라이언트(ex. 클라이언트 A)와 연결되어있기 때문에,
새로운 클라이언트(ex. 클라이언트 B)가 새롭게 연결을 시도하더라도
서버는 클라이언트 A와 연결되어 통신 중이기 때문에 클라이언트 B는 서버와 연결될 수 없음
Last updated on