>  기사  >  Java  >  네트워크 프로그래밍의 특정 단계에 대한 자세한 설명

네트워크 프로그래밍의 특정 단계에 대한 자세한 설명

零下一度
零下一度원래의
2017-07-18 18:00:171403검색

네트워크 프로그래밍의 세 가지 요소

    • IP 주소란 무엇입니까? 인터넷에 있는 컴퓨터의 고유 식별자입니다.
    • InetAddress 클래스에는 생성자가 없습니다. InetAddress 개체
    • IP 주소

    • 를 가져오는 방법은 다음과 같습니다.

static InetAddressgetByAddressgetByName

static InetAddress[]

getAllByName(문자열 호스트) `` 주어진 호스트 이름의 경우, 시스템에서 제공하는 이름 서비스에 따라 해당 IP 주소로 구성된 배열이 반환됩니다.

(바이트[] 주소) P 주어진 원래 IP 주소의 경우 INETADDRESS 개체를 반환합니다.

static InetAddress

getByAddress

(문자열 호스트, 바이트[] 주소) ㅋㅋ 제공된 호스트 이름과 IP 주소를 기반으로 InetAddress를 생성합니다.

static InetAddress

(문자열 호스트) ㅋㅋ                                              밖으로 밖으로 밖으로 밖으로                                                    아웃 아웃 아웃 아웃 아웃.

getByName("호스트 이름(반복 가능)/문자열의 IP 주소

"): 다른 컴퓨터의 IP 주소 문자열을 사용하여 InetAddress 개체를 생성합니다

  • static InetAddressgetLocalHost

()
                                              로컬 호스트로 돌아갑니다.

  • InetAddress의 다른 방법

String

getHostAd 드레스 ()

                                                                                                                                                                                                                                            .

String

getHostName()

이 IP 주소의 호스트 이름을 가져옵니다.

  • 포트 번호
    • 포트 번호 범위: 0~65535

    • 0~1023 범위의 포트는 이미 사용 중입니다. the system

  • Protocol
    • UDP 프로토콜의 특징
    • UDP 프로토콜 통신에 관련된 클래스
    • 전송할 데이터는 다음과 같아야 합니다. 데이터 패킷으로 캡슐화하여 전송할 수 있습니다.

    • 각 데이터 패킷의 크기는 64k로 제한됩니다.

    • 무연결이기 때문에 빠릅니다.

    • UDP 프로토콜 클라이언트와 서버를 구분하지 않고 송신자와 수신자만 분산합니다.

    • 구성 방법

    • Class DatagramSocket
      이 클래스는 데이터그램 패킷을 보내고 받는 데 사용되는 소켓을 나타냅니다.

    • UDP 프로토콜
데이터그램 Socket

()데이터그램 소켓을 구성하고 로컬에 바인딩합니다. 호스트에서 사용 가능한 모든 포트.

  • 회원 방식

void

close ()

                                                         이 데이터그램 소켓을 닫습니다.

void

send(DatagramPacket p) ㅋㅋ 이 소켓에서 데이터그램 패킷을 보냅니다.

매개변수:

p - 전송할 DatagramPacket.

class DatagramPacket
  • 이 클래스는 데이터그램 패킷을 나타냅니다

  • 구성 방법
DatagramPacket

(byte[] buf, int 길이, InetAddress 주소, int 포트) 지정된 호스트의 지정된 포트 번호로 길이 길이의 패킷을 보내는 데이터그램 패킷을 구성합니다.

매개변수:

buf - 패킷 데이터.

길이 - 패키지 길이.

주소 - 목적지 주소.

port - 대상 포트 번호입니다.

  • UDP 단계_먼저 수신측을 시작한 다음 송신측을 시작합니다(반대가 발생하면 데이터 손실이 발생합니다)
    • UDP 서비스를 구축하려면 포트 번호를 수신해야 합니다

      DatagramSocket 소켓 = 새 DatagramSocket(9090);

    • 데이터 수신을 위한 빈 컨테이너 만들기

      byte[] buf = 새 바이트[1024];

      DatagramPacket 패킷 = 새 데이터그램 패킷 (buf, buf .length);

    • 데이터를 수신하려면 빈 데이터 패킷을 사용하세요

      socket.receive(packet); //이 방법은 차단 방법입니다. 송신측에서 전송된 데이터를 수신합니다. 아무도 메시지를 보내지 않으면 영원히 기다릴 것입니다.

      System.out.println("수신된 데이터는 다음과 같습니다: "+new String(buf) );

    • 리소스 닫기

      socket.close();

    • 먼저 UDP 프로토콜 서비스를 설정하세요

      DatagramSocket 소켓 = new DatagramSocket();

    • 데이터를 준비한 다음 데이터를 컨테이너에 캡슐화합니다

      String str = "이것이 내 첫 번째입니다. one 예 udp";

      byte[] buf = str.getBytes();

      DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(),9090);

      //매개변수 1: 데이터 내용, 매개변수 2: 데이터 길이(바이트), 매개변수 3: IP 주소, 매개변수 4: 포트

    • UDP 서비스 클래스 사용 보내기

      소켓.send(packet);

    • 리소스 닫기(리소스 닫기 기능: 포트 번호 해제)

      socket.close();

    • Send End_step:
    • Receiver_step:
  • TCP 프로토콜
    • Client_Socket 클래스

      이 클래스는 클라이언트 소켓을 구현합니다("소켓"이라고도 함). "). 소켓은 두 컴퓨터 간의 통신을 위한 끝점입니다.

    • 구성 방법

    • 전송되는 데이터는 IO 흐름을 기반으로 합니다.

    • 전송되는 데이터에는 크기 제한이 없습니다

    • 방법 악수 메커니즘 데이터 무결성 보장

    • 표면 연결로 인해 속도가 느림

    • TCP 프로토콜은 클라이언트와 서버로 구분됩니다.

    • TCP 프로토콜의 특징
    • 참여 수업

Socket(InetAddress 주소, int 포트)

                           스트림 소켓을 생성하여 지정된 IP 주소의 지정된 포트 번호에 연결합니다.

매개변수:

주소 - IP 주소.

port - 포트 번호.

  • 멤버 메소드

OutputStreamgetOutputStream

InputStream

getInputStream () ㅋㅋ                                                                 이 소켓의 입력 스트림을 반환합니다.

() ㅋㅋ                                       이 소켓의 출력 스트림을 반환합니다.

  • Server_Class ServerSocket

    이 클래스는 서버 소켓을 구현합니다. 서버 소켓은 네트워크를 통해 들어오는 요청을 기다립니다. 요청에 따라 일부 작업을 수행한 다음 결과를 요청자에게 반환할 수 있습니다.

    • 공법

ServerSocket(int 포트)

              특정 포트에 바인딩된 서버 소켓을 만듭니다.

매개변수:

port - 포트 번호 또는 0. 이는 무료 포트를 사용함을 의미합니다.

  • 회원 방식

소켓

accept ()

이 소켓에 대한 연결을 듣고 수락합니다.

질문:

왜 ServerSocket에는 getOutputStream에 해당하는 메소드가 없나요?

서버가 여러 클라이언트에 연결되어 있기 때문에 혼동을 방지하기 위해 각 클라이언트와 통신하여 소켓을 설정합니다. 결국 getOutputStream 및 getInputStream 작업을 수행합니다

  • TCP 단계_서버를 먼저 시작한 다음 클라이언트를 시작합니다(반대의 경우 데이터 손실이 발생합니다)
    • TCP 프로토콜 서버를 설정하고 포트를 수신해야 합니다

      ServerSocket serverSocket = new ServerSocket(9090);

    • 클라이언트의 연결 요청을 수락합니다

      Socket 소켓 = serverSocket.accept(); //이 메서드는 클라이언트가 연결하지 않는 경우 차단 메서드입니다. , 계속 기다릴 것입니다.

    • 입력 스트림을 가져오고 클라이언트가 전송한 데이터를 읽습니다.

      InputStream inputStream = 소켓.getInputStream() ;

      byte[] buf = new byte[1024];

      정수 길이 = 0;

      length = inputStream.read(buf);

      System.out.println("서버 수신 데이터: "+ new String(buf,0,length));

    • Send a message to the client_The server writes data to the client

      //Send a message to the client

      OutputStream out = 소켓.getOutputStream() //출력 스트림 가져오기 객체

      out.write("클라이언트, 받았습니다!".getBytes());

      서버 리소스 닫기

      serverSocket.close();

    • TCP 프로토콜 서비스 설정

      소켓 소켓 = 새 소켓(InetAddress.getLocalHost(), 9090);

    • 서버에 메시지 보내기_클라이언트가 서버에 데이터를 씁니다

      OutputStream out = 소켓 .getOutputStream() ;

      out.write("이것은 내 첫 번째 tcp 예제입니다!".getBytes());

    • 입력 스트림을 가져오고 서버가 전송한 데이터를 읽습니다. Data

      InputStream inputStream = 소켓.getInputStream();

      byte[] buf = 새 바이트[1024];

      int length = inputStream.read(buf);

      System.out .println("데이터 수신됨 클라이언트 : "+ new String (buf, 0, length));

      Server_Steps:

위 내용은 네트워크 프로그래밍의 특정 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.