본문 바로가기
자바

TCP 소켓

by 복제비 2022. 4. 14.

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

댓글