Java で TCP/IP を使用してネットワーク経由でサーバーに接続する場合は、java.net.Socket オブジェクトを作成してサーバーに接続する必要があります。 Java NIO を使用する場合は、Java NIO で SocketChannel オブジェクトを作成することもできます。
ソケットの作成
次のサンプル コードは、IP アドレス 78.64.84.171 のサーバーのポート 80 に接続します。このサーバーは Web サーバー (www.VeVB.COm) であり、ポート 80 は Web サービス ポートです。
次のようにコードをコピーします。
ソケットソケット = new Socket("78.46.84.171", 80);
次の例のように、IP アドレスの代わりにドメイン名を使用することもできます。
次のようにコードをコピーします。
ソケットソケット = new Socket("VeVB.COm", 80);
ソケットがデータを送信する
Socket 経由でデータを送信するには、Socket の出力ストリーム (OutputStream) を取得する必要があります。サンプル コードは次のとおりです。
次のようにコードをコピーします。
ソケットソケット = new Socket("VeVB.COm", 80);
OutputStream out = ソケット.getOutputStream();
out.write("何らかのデータ".getBytes());
out.flush();
out.close();
ソケット.クローズ();
コードは非常に単純ですが、ネットワーク経由でサーバーにデータを送信する場合は、flush() メソッドを呼び出すことを忘れないでください。オペレーティング システムの基盤となる TCP/IP 実装は、まずデータをより大きなデータ キャッシュ ブロックに置き、キャッシュ ブロックのサイズは TCP/IP パケット サイズに適合します。 (翻訳者注: flash() メソッドの呼び出しは、データをオペレーティング システムのキャッシュに書き込むだけであり、データがすぐに送信されることは保証されません)
ソケットがデータを読み取る
ソケットからデータを読み取るには、ソケットの入力ストリーム (InputStream) を取得する必要があります。コードは次のとおりです。
次のようにコードをコピーします。
ソケットソケット = new Socket("VeVB.COm", 80);
入力ストリーム = ソケット.getInputStream();
int データ = in.read();
//...さらにデータを読む...
in.close();
ソケット.クローズ();
コードは複雑ではありませんが、ソケットの入力ストリームからデータを読み取る場合、read() メソッドは -1 が返されるまで呼び出されないことに注意してください。接続が閉じられると、ソケットの入力ストリームは -1 を返しますが、実際にはサーバーは接続を閉じ続けません。単一の接続を介して複数のリクエストを送信したいとします。この場合に接続を閉じるのは愚かなことです。
したがって、ソケット入力ストリームからデータを読み取るときは、サーバーに送信されたバイト数をデータに通知するか、データの末尾に特殊文字を設定することによって、読み取るバイト数を知る必要があります。 . マークアップ方式が実装されています。
ソケットを閉じる
ソケットを使用した後は、ソケットを閉じてサーバーから切断する必要があります。ソケットを閉じるには、Socket.close() メソッドを呼び出すだけです。コードは次のとおりです。
次のようにコードをコピーします。
ソケットソケット = new Socket("VeVB.COm", 80);
ソケット.クローズ();
(全文終わり)