ネットワークプログラミングの具体的な手順を詳しく解説

零下一度
リリース: 2017-07-18 18:00:17
オリジナル
1387 人が閲覧しました

ネットワークプログラミングの 3 つの要素

    • IP アドレスとは何ですか? はインターネット上にあるコンピューターの一意の識別子です。
    • InetAddress クラスにはコンストラクターがありません。 InetAddress オブジェクトを取得するには次のメソッド
    • IP アドレス

static InetAddressgetByAddressgetByName

static InetAddress[]

getAllByName(文字列ホスト) 指定されたホスト名の場合、システム上で提供されるネーム サービスに従って、その IP アドレスで構成される配列が返されます。

(byte[] addr) P 指定された元の IP アドレスの場合は、INETADDRESS オブジェクトを返します。

static InetAddress

getByAddress

(String host, byte[] addr) ️指定されたホスト名と IP アドレスに基づいて InetAddress を作成します。

static InetAddress

(文字列ホスト) ️から出てきます。

getByName("ホスト名(繰り返し可能)/文字列のIPアドレス

"): 他のマシンのIPアドレス文字列を使用してInetAddressオブジェクトを生成します

  • static InetAddressgetLocalHost

()
ローカルホストに戻ります。

  • InetAddressのその他のメソッド

String

getHostAddress ()

− 。

String

getHostName()

この IP アドレスのホスト名を取得します。

  • ポート番号
    • ポート番号の範囲: 0~65535

    • 0~1023 の範囲のポートはすでに使用されていますシステム

  • プロトコル
    • UDPプロトコルの機能
    • UDPプロトコル通信に関与するクラス
    • 送信するデータは次のとおりである必要がありますデータパケットにカプセル化されて送信できるようになります。

    • 各データパケットのサイズは64kに制限されます。

    • コネクションレスなので高速です。

    • UDPプロトコルクライアントとサーバーを区別せず、送信者と受信者のみが分散されます

    • クラス DatagramSocket

    • このクラスは、データグラムパケットの送受信に使用されるソケットを表します

      UDPプロトコル

データグラムSocket

()

データグラムソケットを構築し、ローカルにバインドします。ホスト上で使用可能なポート。

  • 会員方法

void

close ()

このデータグラムソケットを閉じます。

void

send(DatagramPacket p) ️このソケットからデータグラム パケットを送信します。

パラメータ:

p - 送信されるDatagramPacket。

クラス DatagramPacket
  • このクラスはデータグラムパケットを表します

  • 構築メソッド
データグラムパケット

(byte[] buf、int長、InetAddressアドレス、intポート) データグラム パケットを構築して、指定されたホスト上の指定されたポート番号に長さ length のパケットを送信します。

パラメータ:

buf - パケットデータ。

length - パッケージの長さ。

アドレス - 宛先アドレス。

port - 宛先ポート番号。

  • UDPの手順_最初に受信側を開始し、次に送信側を開始します(逆の場合はデータ損失が発生します)
    • UDPサービスを確立するには、ポート番号をリッスンする必要があります

      DatagramSocket ソケット = new DatagramSocket(9090);

    • データを受信するための空のコンテナを作成する

      byte[] buf = new byte[1024];

      DatagramP acket パケット = 新しい DatagramPacket (buf, buf .length);

    • データを受信するには空のデータパケットを使用します

      socket.receive(packet); //このメソッドはブロッキングメソッドです。送信側から送信されたデータを受信します。誰もメッセージを送信しない場合、永久に待機することになります。

      System.out.println("受信したデータは次のとおりです: "+new String(buf) );

    • リソースを閉じる

      socket.close();

    • まず UDP プロトコル サービスを確立します

      DatagramSocketソケット = new DatagramSocket();

    • データを準備し、データをコンテナにカプセル化します

      String str = "これが私の最初です1 udp";

      byte[] buf = str.getBytes();

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

      //パラメーター 1: データの内容、パラメーター 2: データの長さ (バイト)、パラメーター 3: IP アドレス、パラメーター 4: ポート

    • UDP サービス クラスを使用 送信

      socket.send(packet);

    • リソースを閉じる(リソースを閉じる機能:ポート番号を解放する)

      socket.close();

    • Send End_step:
    • Receiver_step:
  • TCPプロトコル
    • Cl ient_Socket クラス

      このクラスはクライアントソケット(「ソケット」とも呼ばれます)を実装します")。ソケットは、2 つのマシン間の通信のエンドポイントです。

    • 構築方法

    • 送信されるデータはIOフローに基づいています

    • 送信されるデータのサイズ制限はありません

    • ウェイハンドシェイクメカニズム、へデータの整合性を確保します

    • サーフェス接続のため、速度が遅いです

    • TCPプロトコルはクライアントとサーバーに分かれています

    • TCPプロトコルの特徴
    • 関係するクラス

Socket(InetAddressアドレス、intポート)

ストリームソケットを作成し、指定された IP アドレスの指定されたポート番号に接続します。

パラメータ:

address - IP アドレス。

ポート - ポート番号。

  • メンバーメソッド

InputStream

getInputStream ()

このソケットの入力ストリームを返します。

OutputStream

getOutputStream()

このソケットの出力ストリームを返します。

  • Server_Class ServerSocket

    このクラスはサーバーソケットを実装します。サーバーソケットは、ネットワーク経由で受信されるリクエストを待ちます。リクエストに基づいて何らかのアクションを実行し、結果をリクエスト元に返す場合があります。

    • 施工方法

ServerSocket(intポート)

特定のポートにバインドされたサーバーソケットを作成します。

パラメータ:

port - ポート番号、または 0。空いているポートを使用することを意味します。

  • メンバーメソッド

Socket

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));

    • 送信クライアントへのメッセージ_サーバーはクライアントにデータを書き込みます

      //クライアントにメッセージを送信しますサーバーはクライアントにデータを書き込みます

      OutputStream out =ソケット.getOutputStream() //出力ストリームオブジェクトを取得します

      out.write("クライアント、受信しました!".getBytes());

      サーバーリソースを閉じる

      serverSocket.close();

    • TCPプロトコルサービスを確立する

      Socket ソケット = new Socket(InetAddress.getLocalHost(), 9090);

    • サーバーにメッセージを送信します_クライアントはサーバーにデータを書き込みます

      OutputStream out =ソケット .getOutputStream() ;

      out.write("This is my first tcp example!".getBytes());

    • 入力ストリームを取得し、サーバーによって送信されたデータを読み取ります Data

      InputStream inputStream =ソケット.getInputStream();

      byte[] buf = new byte[1024];

      int length = inputStream.read(buf);

      System.out .println("データを受信しましたクライアントによる: "+ new String(buf,0,length));

    • クライアントリソースを閉じる

      socket.close();

    • Client_Steps:
    • Server_Steps:

以上がネットワークプログラミングの具体的な手順を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!