ネットワーク通信

ネットワーク通信三つの要素:

IPアドレス:InetAddressの

  ネットワーク機器の識別、覚えやすい、ホスト名は、現在の32ビットのIPv4利用可能である、128ビットのIPv6疲れてきました

  公開アドレスはインターネットに直接アクセス、ネットワークアドレスに使用することができ、ローカルエリアネットワークであります

ポート番号:

  識別する論理アドレス、異なるプロセスを識別するために使用されるプロセス

転送プロトコル

  通信規制、共通の合意:

  接続を完了するためにTCP、3ウェイハンドシェイク、プロトコルは信頼性が高く、効率的なエンドポイント、高いセキュリティ

  UDP、データパッケージは、パッケージには、接続を確立せず、唯一の64K、高効率で、各パケットの送信を担当しますが、安全ではありません

  

InetAddressクラス - IPアドレスの代わりに

静的メソッド:

元のIPアドレスに戻りgetAddress--

getAllByNameの(文字列ホスト(ホスト名)) - 配列は、以下からなるIPアドレスを取得します

getByName(文字列のホスト/ IPアドレス) - ターゲットのIPアドレスを取得します。

ローカルホスト名を取得getLocalHost--

オブジェクトメソッド:

ホストIPアドレスを取得getHostAddress--

getHostName-- GETホスト名

 

UDPプロトコルを使用してデータを送信します

  送信者Socketオブジェクトを作成します

    DatagramSocketの() - ランダムに割り当てられたポート番号

    DatagramSocketの(int型ポート) - ポート番号を決定

    DatagramSocketのDS =新しいのDatagramSocket();

  そして、データパッケージを作成します

    DatagramPacket--はパケットを示し、

    文字列s = "こんにちは";

    バイト[] BYS = s.getBytes()。

    int型の長さ= bys.length。

    InetAddressのアドレス= InetAddress.getByName( "主机名")。

    int型ポート= 8888;     

    DatagramPacket DP =新規のDatagramPacket(BYS、長さ、アドレス、ポート)。

  データを送信します

    ds.send(DP)。

  リソースを解放

    ds.close();

データを受け入れるようにUDPプロトコル

  Socketオブジェクトの受信側を作成します。

  DatagramSocketのDS =新規のDatagramSocket(8888);ポートの受信側を指定する必要

  データパケットを受け入れます

  バイト[] BYS =新しいバイト[1024];

  DatagramPacket DP =新しいのDatagramPacket(BYS、bys.length)。

  ds.receive(DP); //ブロックされた - データが来るのを待っています

  解像度パケット

  InetAddressのアドレス= dp.getAddress()。

  バイト[]データ= dp.getData()。

  INT長= dp.getLength()。

  SYSOUT(address.getHostAddress())。

  SYSOUT(新しい文字列(データ、0、長さ)); - どのように多く認められた上で多くのデータを受信

  リソースを解放

   dp.close();

 

送信し、UDPプロトコルNotesを使用して、データを受信します。

  ポート番号の誤り、データが異常、正常でない送信されますが、データを受信できないことができます

  アドレスは、すでにユーザーに:bind--ポート番号が占有されることができません

 

TCPプロトコルを使用してデータを送信します。

  //送信者Socketオブジェクトを作成します(:IP、ポート接続を作成します)

  ソケットS =新しいソケット(InetAddress.getByName( "ホスト名")、ポート番号);

  //出力ストリームオブジェクトを取得します。

  OutputStreamのOS = s.getOutpuStream()。

  //送信データ

  文字列str = "こんにちは";

  os.write(str.getBytes())。

  //リリースリソース

  S。CLOSE();

 

データを受け入れるためにTCPプロトコルを使用して

  //受信側のSocketオブジェクトを作成します(:IP、ポート接続を作成します)

  ServerSocket SS =新しいServerSocketを(ポート);

  //聞く(ブロッキング)

  ソケットS = ss.accept()。

  //入力ストリームオブジェクトを取得します。

  入力ストリームは= s.getInputStream()です。

  //データを取得します。

  バイト[] BYS =新しいバイト[1024];

  INT LEN = is.read(BYS)。

  //出力データ

  SYSOUT( "クライアント - >" +引数としてs.getInetAddress()のgethostname());ホスト名から送られた//出力 

  SYSOUT(新しいString(BYS、0、LEN));

  //リリースリソース

  S。CLOSE();

 

 

、connect--接続障害を拒否されました:接続が拒否されました

 

 

 

 

おすすめ

転載: www.cnblogs.com/dajingshao/p/11993393.html