[자바(Java)] Socket Programming

방용환·2023년 4월 28일
0
post-thumbnail

1. Socket Programming

1. 용어 설명

  • TCP 프로그램 : ServerSocket 클래스와 Socket 클래스를 이용하여 작성
    => 서버와 클라이언트가 소켓을 사용하여 1:1로 연결되어 데이터를 송수신하는 네트워크 프로그램
  • UDP 프로그램 : DatagramSocket 클래스와 DatagramPacket 클래스를 이용하여 작성
    => 값을 전달하는 컴퓨터와 값을 전달받는 컴퓨터로 구분하여 처리
  • 서버 (Server) : 외부의 컴퓨터(클라이언트)가 접속할 수 있는 환경과 서비스를 제공하기 위한 컴퓨터
    => ServerSocket 클래스를 사용하여 서버 프로그램 작성
  • 클라이언트 (Client) : 서버에 접속하여 서비스를 제공받을 수 있는 컴퓨터
    => Socket 클래스를 사용하여 클라이언트 프로그램 작성
  • NTP (Network Time Protocol) Server : 날짜와 시간을 제공하는 서버 컴퓨터

2. TCP 프로그램

1. ServerSocket 클래스

  • ServerSocket 클래스 : 서버 프로그램을 작성하기 위해 사용하는 클래스
  • ServerSocket 클래스의 ServerSocket(int port) 생성자를 이용하여 매개변수로 전달받은 포트번호를 활성화하여 ServerSocket 객체 생성
    => new ServerSocket(2000);
  • ServerSocket 객체를 생성하여 클라이언트가 접속할 수 있는 환경 제공
  • 매개변수로 전달받은 포트번호를 이미 다른 네트워크 프로그램에 사용중인 경우 IOException 발생

2. ServerSocket 클래스의 메소드

  • ServerSocket.toString() : ServerSocket 객체에 저장된 접속 관련 정보를 문자열로 반환하는 메소드
  • ServerSocket.accept() : 클라이언트가 접속되면 클라이언트와 값을 주고 받을 수 있는 Socket 객체를 반환하는 메소드
    => 클라이언트가 접속되기 전까지 스레드가 일시 중지되며 클라이언트가 접속되면 클라이언트의 소켓과 연결될 소켓을 생성하여 반환하고 스레드 재실행
  • ServerSocket.close() : ServerSocket 객체를 제거하는 메소드
    => 클라이언트가 접속할 수 있는 환경 소멸
  • Socket.getOutputStream() : Socket 객체의 출력스트림(OutputStream 객체)을 반환하는 메소드

3. Socket 클래스

  • Socket 클래스 : TCP 프로그램에서 다른 컴퓨터와의 연결을 위한 정보를 저장하기 위한 클래스
    => 다른 컴퓨터의 소켓과 연결되어 값을 송수신할 수 있는 입출력 스트림 제공
  • Socket 클래스의 Socket(String host, int port) 생성자를 이용하여 매개변수에 접속 컴퓨터(서버)의 네트워크 식별자(호스트이름 또는 IP 주소)와 활성화된 포트번호를 전달하여 Socket 객체 생성
  • UnknownHostException 및 IOException 발생 (일반 예외이므로 반드시 예외 처리)

4. Socket 클래스의 메소드

  • Socket.getInputStream() : Socket 객체의 입력스트림(InputStream 객체)을 반환하는 메소드
  • Socket.getOutputStream() : Socket 객체의 출력스트림(OutputStream 객체)을 반환하는 메소드
  • Socket.close() : Socket 객체를 제거하는 메소드

3. UDP 프로그램

1. DatagramSocket 클래스

  • DatagramSocket 클래스 : 다른 컴퓨터와의 연결을 위한 정보를 저장하기 위한 클래스
  • DatagramSocket 클래스의 DatagramSocket(int port) 생성자를 사용하여 포트를 활성화 처리하여 DatagramSocket 객체 생성
  • DatagramSocket.send(DatagramPacket packet) : 매개변수로 전달받은 DatagramPacket 객체의 패킷정보를 이용하여 데이터(패킷)를 전달하는 메소드
  • DatagramSocket.close() : DatagramSocket 객체를 제거하는 메소드
  • DatagramSocket.receive(DatagramPacket packet) : 연결 컴퓨터에서 보내온 값을 얻어와 DatagramPacket 객체의 byte 배열에 저장하기 위한 메소드

2. DatagramPacket 클래스

  • DatagramPacket 클래스 : 연결 컴퓨터에게 보낼 패킷정보를 저장하기 위한 클래스
  • DatagramPacket 클래스의 DatagramPacket(byte[] data, int length, InetAddress address, int port) 생성자를 사용하여 데이터를 보내기 위한 패킷정보가 저장된 DatagramPacket 객체 생성
  • DatagramPacket 클래스의 DatagramPacket(byte[] buf, int length) 생성자를 이용하여 데이터를 받기 위해 DatagramPacket 객체 생성

0개의 댓글