Skip to Content
Suffering builds character
아카이브13.프로세스,스레드특징소켓, 스레드2.소켓 통신 절차

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