네트워크 (Socket Class)

msung99·2022년 2월 15일
0


네트워크 데이터 입력 및 출력

  • 네트워크상에서 네트워크 대상 (객체) 사이에 입/출력 (InputStream, OutputStream) 을 이용해서 데이터를 송신 (입력하고 출력) 할 수 있다

소켓(Socket)

  • 네트워크상에서 객체들간에 서로 데이터를 주고받기 위한 장치

Socket 클래스

  • 서버는 클라이언트를 맞을 준비를 하고 있다가 클라이언트의 요청에 반응한다.

    • 클라이언트 : 데이터를 요청하는 곳
    • 서버 : 클라이언트에서 요청된 데이터를 제공해주는 곳
  • 클라이언트에서는 네트워크 상에서 데이터를 요청하기 위해 소켓을 만들어야 한다.

  • 서버 소켓(Server Socket) : 서버에서는 클라이언트 부터 요청이 들어오면 서버 소켓이라는 것으로 소켓을 만들어서 데이터를 클라이언트에게 넘겨준다.


서버 소켓(Server Socket) 클래스

서버 소켓은 클래스로 이미 구현되어 있다. 내부적으로 어떻게 생겼는지 로직을 이해할 필요는 없고 그냥 가져다 쓰면 된다.

  • 형식

    ServerSocket 변수명 = new ServerSocket(서버 포트넘버);

  • 클라이언트가 요청하면 서버소켓의 accept( ) 메소드가 자동으로 실행되고,
    이 실행된 것을 바탕으로 서버쪽에서 소켓을 반환해준다.

import java.net.ServerSocket;
import java.net.Socket;

serverSocket = new ServerSocket(9000);
System.out.println("클라이언트 맞을 준비 완료");

try{
  serverSocket = new ServerSocket(9000); // 서버 쪽에서 서버소켓을 만들어서
  // 클라이언트를 맞이할 준비가 완료되었다. 
  
  System.out.println("클라이언트 맞을 준비 완료!!");
  
  socket = serverSocket.accept(); // 외부 클라이언트에서 서버에 접속을 하면 
  // 서버소켓의 accept() 가 받고 소켓을 반환해준다.
  // 이제 이 클라이언트의 소켓인 socket 으로 서버와 서로 송신한다
  
  System.out.println("socket:" + socket);
  
} catch (Exception e) {
  e.printStackTrace();
  
} finally {
  try{
    if(socket != null) socket.close();
    if(serverSocket != null) serverSocket.close();
    
  } catch (Exception e) {
     e.printStackRTrace();
   }
 }


System.out.println("socket:" + socket);

Client 와 서버 소켓

  • 서버에 ServerSocket 을 준비하고 클라이언트에서 Socket 을 이용해서 접속한다.
profile
https://haon.blog

0개의 댓글