
[java 네트워크 프로그래밍] 7. TCP/IP 소켓언어/네트워크 프로그래밍2015. 8. 9. 06:03
Table of Contents
1자바에서 소켓을 이용하여 데이터 통신을 하려면 소켓(Socket)클래스를 이용한다.
소켓은 네트워크상에서 통신하는 두 응용프로그램 간의 양방향 통신 링크의 한쪽 끝을 의미한다.
소켓은 특정 포트 번호에 연결되어 있어 데이터를 보내거나 받을 때 해당 응용프로그램을 식별할 수 있다.
보통 정보를 제공하는 쪽은 서버, 이 정보를 이용하는 쪽은 클라이언트라고 부른다.
소켓을 이용한 서버 클라이언트 통신 프로그램의 구조
- 클라이언트 응용프로그램은 Socket 클래스를 이용하여 소켓 객체를 생성 및 서버와 통신
- 서버는 ServerSocket클래스를 이용하여 소켓 객체를 생성하고 클라이언트와 통신
- 서버는 클라이언트의 접속을 받기 위해 서버 포트에 대한 요청을 기다림
- 서버는 accept()메소드에서 클라이언트와 통신하는 전용 소켓을 따로 생성하여 접속된 클라이언트와 통신
- 서버는 클라이언트가 접속 할 때 마다 accept() 메소드에서 따로 전송 소켓을 생성하여 클라이언트와 통신하도록 한다.
- 통신이 끝나면 소켓을 닫는다.
사진 1 서버 클라이언트 통신 구조
Socket 클래스
Socket 클래스는 java.net 패키지에 포함되어 있는 클래스로서 서버와 통신하기 위해 클라이언트에서 사용하는 소켓이다.
생성 자와 메소 드는 다음과 같다.
사진 2 Socket 클래스의 생성 자와 주요 메소드
서버와의 통신 시는 일반적으로 입출력 할 때와 같이 스트림을 읽고 쓴다.
사진 3 서버와의 데이터 스트림 교환 구조
ServerSocket 클래스
Server Socket은 java.net 패키지에 포함되어 있으며 ServerSocket은 클라이언트 측으로부터 연결 요청을 기다리는 모니터링을 위해 사용되며 서버가 클라이언트의 연결 요청을 수락하면 Socket 객체를 새로 생성한다. 그러므로 ServerSocket 객체는 클라이언트와의 데이터 송수신에 사용되지 않는다.