TCP 소켓
자바는 TCP 기반의 클라이언트-서버 통신을 위해 ServerSocket 클래스, Socket 클래스를 제공합니다.
클라이언트-서버 환경에서 서버측 프로그램은 데몬 프로그램처럼 실행 상태로 클라이언트의 요청을 기다립니다.
ServerSocket 클래스
ServerSocket 클래스의 생성자
ServerSocket(int port) throws IOException
port 는 클라이언트의 요청을 받아들일 포트 번호를 의미합니다.
ServerSocket 클래스의 메서드들
Socket accept( ) throws IOException
클라이언트의 요청을 받아들인 다음, Socket 클래스 객체를 반환하는 메서드입니다.
void close( ) throws IOException
서버 소켓을 닫는 메서드입니다.
Socket 클래스
Socket 클래스는 클라이언트와 서버 사이의 실질적인 정보를 교환합니다.
Socket 클래스의 생성자
Socket(String hostName, int port) throws UnknownHostException, IOException
hostName : 연결을 원하는 컴퓨터의 주소(예: 223.130.195.200 또는 www.naver.com) 를 의미합니다.
port : 연결할 포트 번호를 를 의미합니다.
Socket 클래스의 주요 메서드들
① InputStream getInputStream( ) throws IOException
현재의 소켓과 관련된 InputStream 객체를 반환하는 메서드입니다.
② OutputStream getOutputStream( ) throws IOException
현재의 소켓과 관련된 OutputStream 객체를 반환하는 메서드입니다.
③ void close( ) throws IOException
소켓을 닫는 메서드입니다.
④ InetAddress getInetAddress( )
현재 소켓에 연결된 컴퓨터의 주소를 반환하는 메서드입니다.
⑤ InetAddress getLocalAddress( )
현재 소켓을 사용하고 있는 컴퓨터의 주소를 반환하는 메서드입니다.
⑥ int getPort( )
현재 소켓에 연결된 컴퓨터의 포트 번호를 반환하는 메서드입니다.
⑦ int getLocalPort( )
현재 소켓이 사용하고 있는 포트 번호를 반환하는 메서드입니다.
클라이언트-서버 간의 TCP 소켓 동작 순서
ServerSocket 과 Socket 클래스를 이용한 클라이언트-서버 간의 동작 순서는 다음과 같습니다.
서버측 프로그램 실행 순서
① ServerSocket 클래스를 이용하여 서버 소켓 객체를 생성한 다음 클라이언트의 요청을 기다립니다.
② 클라이언트의 요청이 발생되면 요청을 받아들여 Socket 객체를 생성합니다.
③ Socket 객체를 이용하여 입출력을 위한 스트림을 생성합니다.
④ 통신을 수행합니다.
⑤ 소켓을 닫아 줍니다.
클라이언트측 프로그램 실행 순서
① 연결을 원하는 서버의 주소와 포트 번호로 Socket 객체를 생성합니다.
② Socket 객체를 이용하여 입출력을 위한 스트림을 생성합니다.
③ 통신을 수행합니다.
④ 소켓을 닫아 줍니다.
클라이언트-서버 간의 TCP 소켓 실습 프로그램
Socket 클래스와 ServerSocket 클래스를 이용한 클라이언트-서버 간의 통신 실습 프로그램은 다음과 같습니다.
서버측 실습 프로그램은 다음과 같습니다.
서버측 실습 프로그램에서 args[0] 에 해당하는 아규먼트를 이클립스의 Arguments 탭에서 다음과 같이 입력해줍니다.
클라이언트측 실습 프로그램은 다음과 같습니다.
클라이언트측 실습 프로그램에서 args[0] 과 args[1] 에 해당하는 아규먼트를 이클립스의 Arguments 탭에서 다음과 같이 입력해줍니다.
실행 결과는 다음과 같습니다.
'자바' 카테고리의 다른 글
Swing과 AWT (0) | 2022.04.18 |
---|---|
UDP 소켓 (0) | 2022.04.15 |
URLConnection 클래스 (0) | 2022.04.13 |
URL 클래스 (0) | 2022.04.12 |
InetAddress 클래스 (0) | 2022.04.11 |
댓글