ネットワーク通信三つの要素:
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--接続障害を拒否されました:接続が拒否されました