[자바] Socket(소켓)
소켓의 정의
소켓은 네트워크 상에서 돌아가는 두 개의 프로그램 간 양방향 통신의 하나의 엔트 포인트입니다.
소켓은 포트 번호에 바인딩되어 TCP 레이어에서 데이터가 전달되야하는 어플리케이션을 식별할 수 있게 합니다.
엔드 포인트란?
여기서 엔드 포인트라 함은 아이피 주소와 포트 번호의 조합을 의미합니다.
모든 TCP 연결은 2개의 앤드 포인트로 유일하게 식별되어질 수 있습니다.
따라서 클라이언트와 서버 간 여러 개의 연결이 맺어질 수 있습니다.
서버 소켓
- 서버 프로그램에서만 사용하는 소켓.
- 클라이언트로부터 연결 요청이 오기를 기다렸다가 연결 요청이 들어오면 클라이어느와 연결을 맺고 다른 소켓을 만드는 일을 한다.
클라이언트 소켓
- 클라이언트 프로그램에서 서버 프로그램으로 연결 요청을 하는 것과 데이터 전송을 하는 일을 한다.
<소켓을 생성하고 사용하는 방법>
서버 소켓 사용방법
- ServerSocket server = new ServerSocket(포트번호);
//클라이언트로부터 연결 요청이 들어오면 연결을 맺고 클라이언트 소켓을 생성해 리턴한다.
- Socket client - server.accept();
클라이언트 소켓 사용방법
- Socket socket = new Socket (서버 아이피 번호, 서버 포트번호);
서버, 클라이언트간 데이터 전송방법
//데이터 수신에 사용할 입력 스트림 객체를 리턴
InputStream input = socket.getInputSteam();
//데이터 송신에 사용할 출력 스트림 객체를 리턴
OutputStream output = socket.OutputStream();
//파라미터로 넘겨준 데이터 송신
String data = "Hi Server!";
output.write(data);
//수신된 테이터를 읽어서 리턴
String data = input.read();
//소켓을 닫는 메소드
socket.close();
//서버 소켓을 닫는 메소드
serverSocket.close();
출처: https://juyoung-1008.tistory.com/19