JAVA - java.net 패키지

TopOfTheHead·2025년 7월 26일

자바 ( JAVA )

목록 보기
3/23

Java소켓 관련 Class
소켓개념 및 예제

JAVAjava.net 패키지에서 연결방식( TCP , UDP )에따라 2가지 종류의 소켓( Socket , DatagramSocket )을 제공

TCP 관련 Class

  • Socket Class : java.net.socket
    두 프로세스Server-Client 관계로 네트워크 통신을 수행 시 사용하는 Socket Class

    TCP( Transmission Control Protocol ) 통신방식을 사용
    연결지향형 프로토콜( Connection-Oriented )

    프로세스Socket 중 주로 Client Socket 역할 활용됨
    자식클래스이자 Server Socket 역할을 수행하는 ServerSocket Class와 1:1로 연결되어 데이터를 전송

    서버-클라이언트 간 소켓연결은 1:1만 가능하므로 통신이 끝난 경우 연결종료를 하여 다른 소켓을 연결.

    。연결을 수행할 특정 ServerSocket의 컴퓨터의 IP주소, 포트번호를 생성자로 전달하여 연결될 Client Socket 역할의 Socket 객체를 생성
    Socket socket = new Socket("127.0.0.1", 8080)
    ▶ 해당 Socket 객체를 통해 데이터의 송수신을 수행

    Server-side에서는 연결 시 서버소켓객체.accept()를 통해 반환됨.

    Socket Method

    • 소켓객체.getInputStream()
      Server Socket로부터 Client Socket으로 데이터를 수신하여 InputStream 객체로 반환하는 Method
      Client-Side에서 사용
    InputStream input = socket.getInputStream();                    // 바이트 스트림
    InputStreamReader reader = new InputStreamReader(input);       // 문자 변환
    BufferedReader in = new BufferedReader(reader);                // 라인 단위로 읽기
    String line = in.readLine();                                   // 한 줄 읽기
    System.out.println("받은 메시지: " + line);
    • 소켓객체.getOutputStream()
      Server Socket로부터 Client Socket으로 데이터를 송신하여 OutputStream 객체를 반환하는 Method
      Server-Side에서 사용
    OutputStream output = socket.getOutputStream();                  // 바이트 출력 스트림
    PrintWriter out = new PrintWriter(output, true);                 // 문자 기반 출력
    out.println("안녕하세요, 클라이언트!");                          // 데이터 전송
    • 소켓객체.close()
      。 연결된 Server Socket과 연결종료를 수행하는 Method


  • ServerSocket Class : java.net.serversocket
    두 프로세스간 네트워크 통신을 수행 시 Server-Side로서 Server Socket 역할을 수행하여 특정 포트번호TCP 서버를 구현하는 Class
    Socket Class를 상속하므로 동일한 TCP 통신방식을 사용

    。특정 포트번호를 생성자로 전달하여 ServerSocket 객체 생성
    ServerSocket server = new ServerSocket(포트번호);
    ServerSocket 객체는 해당 포트번호와 바인딩되어 해당 포트번호Client Socket에 의한 연결( Listen )을 상시대기를 수행

    ServerSocket Method

    • 서버소켓객체.accept() :
      ServerSocket 객체가 바인딩하는 포트번호Client Socket에 의한 연결요청이 오면 Client SocketSocket Class객체를 반환하는 Method
      Client SocketSocket Class객체가 반환된 경우 두 프로세스 간 연결이 정상적으로 되었으며 반환된 Socket 객체를 통해 통신을 수행

    • 서버소켓객체.close()
      서버소켓을 종료
      ▶ 서버 폐쇄

    • 서버소켓객체.isClosed()
      서버소켓 객체의 연결여부를 반환

    • 서버소켓객체.getLocalPort()
      서버소켓 객체가 바인딩한 포트를 반환

UDP 관련 Class

  • DatagramPacket Class : java.net.DatagramPacket
    UDP 프로토콜에 의해 네트워크 상에서 송수신될 Datagram과 관련된 Class
    UDP Datagram은 해당 Class객체로 추상화되어 구현

    UDPTCP와 달리 비연결성 프로토콜이므로 데이터에 목적지 소켓의 IP Address포트번호를 추가해야하므로 DatagramPacket을 통해 Datagram을 구현

    。수신할 Server HostIP AddressServerSocket포트번호를 데이터와 함께 포함하여 Datagram을 생성
    ▶ 이후 DatagramSocket Class에 의해 전송

  • DatagramSocket Class : java.net.DatagramSocket
    UDP 통신을 수행하여 연결없이 데이터그램( = 패킷 )의 송수신을 수행하는 Class

    new DatagramSocket(포트번호)
    포트번호를 생성자로 전달하여 DatagramSocket 객체 생성

    。모든 DatagramSocketDatagram의 송수신이 가능
    TCPSocketServerSocket과 달리 DatagramSocketUDP Server SocketUDP Client Socket을 구현할 수 있다.

    UDP( User Datagram Protocol ) 통신방식을 사용
    • DatagramSocket객체.send(DatagramPacket객체)
      DatagramPacket객체로 정의된 UDP 데이터그램을 전송


  • MulticastSocket Class
    UDP 기반으로 그룹에 참여한 다수의 Client에게 데이터 동시전송이 가능

    DatagramSocket Class를 상속하므로 UDP 통신방식을 사용

InetAddress : java.net.InetAddress
DNS의 역할을 수행하는 Class
Host name를 전달하면 IP Address로 변환

  • InetAddress.getByName(호스트이름)
    호스트이름을 넣어서 InetAddress 객체 생성

  • InetAddress객체.getHostName()
    InetAddress객체Hostname를 return.

  • InetAddress객체.getHostAddress()
    InetAddress객체IP Address를 반환
        
profile
공부기록 블로그

0개의 댓글