Javaでのソケットプログラミングについてすべて知っている



Javaソケットプログラミングは、異なるJREで実行されているアプリケーション間の通信に使用されます。 Java Socketプログラミングは、コネクション型またはコネクションレス型にすることができます。

のソケットプログラミング 異なる上で実行されているアプリケーション間の通信に使用されます 。コネクション型またはコネクションレスのいずれかです。全体として、ソケットはクライアントとサーバー間の接続を確立する方法です。この記事では、ソケットプログラミングについてすべて説明します。

この記事では、以下のトピックについて説明します。





Javaでのソケットプログラミングとは何ですか?

ソケットプログラミング ネットワーク上の2つのノードを接続して相互に通信する方法です。 1 ソケット (ノード)IPで特定のポートをリッスンし、その他 ソケット 接続を形成するために他の人に手を差し伸べます。

クライアントサーバー通信-Javaでのソケットプログラミング-Edureka



サーバーがリスナーを形成します ソケット クライアントはサーバーに連絡します。ソケットとサーバーソケット コネクション型ソケットプログラミングに使用されます。

それでは、ソケットプログラミングのコアコンセプト、つまりソケットについて理解しましょう。

Javaのソケットとは何ですか?

ソケットは、ネットワーク上で実行されている2つのプログラム間の双方向通信リンクの1つのエンドポイントです。 A ソケット TCP層がデータの送信先のアプリケーションを識別できるように、はポート番号にバインドされています。



エンドポイントは、IPアドレスとポート番号の組み合わせです。 Javaプラットフォームのパッケージは、クラスを提供します。ソケットこれは、Javaプログラムとネットワーク上の別のプログラムとの間の双方向接続の片側を実装します。このクラスは、プラットフォームに依存する実装の上に配置され、Javaプログラムから特定のシステムの詳細を隠します。ネイティブコードに依存する代わりにクラスを使用することにより、 プラットフォームに依存しない方法でネットワークを介して通信できます。

JavaのSocketとは何かがわかったところで、さらに進んで、クライアントがサーバーとどのように通信し、サーバーがどのように応答するかを理解しましょう。

クライアント側プログラミング

クライアント側のプログラミングの場合、クライアントは最初にサーバーの起動を待ちます。サーバーが稼働すると、サーバーにリクエストが送信されます。その後、クライアントはサーバーからの応答を待ちます。つまり、これがクライアントとサーバーの通信のロジック全体です。それでは、クライアント側とサーバー側のプログラミングについて詳しく理解しましょう。

クライアントリクエストを開始するには、以下の手順に従う必要があります。

1.接続を確立します

最初のステップは、ソケット接続を確立することです。ソケット接続は、2台のマシンが互いのネット​​ワークロケーション(IPアドレス)とTCPポートに関する情報を持っていることを意味します。

以下のステートメントを使用してソケットを作成できます。

ソケットソケット=新しいソケット(“ 127.0.0.1”、5000)

  • ここで、最初の引数は サーバーのIPアドレス

  • 2番目の引数は TCPポート 。 (これは、サーバー上で実行する必要があるアプリケーションを表す数値です。)

2.コミュニケーション

ソケット接続を介して通信するために、ストリームはデータの入力と出力の両方に使用されます。接続を確立してリクエストを送信したら、接続を閉じる必要があります。

3.接続を閉じる

サーバーへのメッセージが送信されると、ソケット接続は明示的に閉じられます。

次に、クライアント側でソケット接続を実装するJavaプログラムを作成する方法を見てみましょう。

// ClientSide用のJavaプログラムimportjava.net。* importjava.io。* public class ClientProgram {//ソケットと入力出力ストリームを初期化しますprivateSocket socket = null private DataInputStream input = null private DataOutputStream out = null //コンストラクターipアドレスとポートを配置するpublicClient(String address、int port){//接続を確立するtry {socket = new Socket(address、port)System.out.println( 'Connected')//端末から入力を受け取るinput = new DataInputStream(System.in)//出力をソケットに送信しますout = new DataOutputStream(socket.getOutputStream())} catch(UnknownHostException u){System.out.println(u)} catch(IOException i){System.out .println(i)} //入力からメッセージを読み取る文字列Stringline = '' // 'Over'が入力されるまで読み取りを続けますwhile(!line.equals( 'Over')){try {line = input.readLine( )out.writeUTF(line)} catch(IOException i){System.out.println(i)}} //接続を閉じるtry {input.close()out.close()socket.close()} catch(IOException私){System.out.println(i)}} public static void main(String args []){Client client = new Client( '127.0.0.1'、5000)}}

それでは、サーバー側プログラミングを実装してから、出力に到達しましょう。

サーバーサイドプログラミング

基本的に、サーバーはオブジェクトをインスタンス化し、クライアントの要求を待ちます。クライアントがリクエストを送信すると、サーバーはレスポンスと通信します。

サーバー側アプリケーションをコーディングするには、2つのソケットが必要であり、それらは次のとおりです。

  • ServerSocket これはクライアントの要求を待機します(クライアントが新しいSocket()を作成するとき)

  • 昔ながらの ソケット クライアントとの通信用。

この後、応答を使用してクライアントと通信する必要があります。

配列javaで最大数を見つける方法

コミュニケーション

getOutputStream() メソッドは、ソケットを介して出力を送信するために使用されます。

接続を閉じる

すべてが完了したら、ソケットと入力/出力ストリームを閉じて接続を閉じることが重要です。

次に、サーバー側でソケット接続を実装するJavaプログラムを作成する方法を見てみましょう。

//サーバーサイド用のJavaプログラムimportjava.net。* importjava.io。* public class ServerSide {//ソケットと入力ストリームを初期化しますprivateSocket socket = null private ServerSocket server = null private DataInputStream in = null //コンストラクターport public Server(int port){//サーバーを起動して接続を待機しますtry {server = new ServerSocket(port)System.out.println( 'Server Started')System.out.println( 'Waiting for a client .. 。 ')socket = server.accept()System.out.println(' Client Accepted ')//クライアントソケットから入力を受け取りますin = new DataInputStream(new BufferedInputStream(socket.getInputStream()))String line =' '/ / 'Over'が送信されるまでクライアントからメッセージを読み取りますwhile(!line.equals( 'Over')){try {line = in.readUTF()System.out.println(line)} catch(IOException i){System。 out.println(i)}} System.out.println( 'Closing connection')//接続を閉じるsocket.close()in.close()} catch(IOException i){System.out.println(i)}} public static void main(String args []){サーバーサーバー=新しいサーバー(5000)}}

クライアント側とサーバー側の両方を構成した後、最初にサーバー側プログラムを実行できます。その後、クライアント側のプログラムを実行してリクエストを送信する必要があります。クライアント側からリクエストが送信されるとすぐに、サーバーは応答します。以下のスナップショットは同じことを表しています。

1.サーバー側スクリプトを実行すると、スクリプトが起動し、クライアントが起動するのを待ちます。

2.次に、クライアントは接続され、文字列の形式でリクエストを入力します。

3.クライアントが要求を送信すると、サーバーは応答します。

これが、Javaでソケットプログラムを実行する必要がある方法です。これらのプログラムは、ターミナルウィンドウまたはコマンドプロンプトで実行することもできます。ただし、Eclipseはその機能が非常に高度であるため、コンソールで両方のプログラムを実行するだけで済みます。

これで、Javaでのソケットプログラミングに関する記事は終わりです。私はあなたの知識にいくつかの光を当てたことを願っています ソケットプログラミング。

チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。私たちはあなたの旅のあらゆるステップを支援するためにここにいます。このJavaインタビューの質問に加えて、Java開発者になりたい学生や専門家向けに設計されたカリキュラムを考え出します。

質問がありますか?この「Javaでのソケットプログラミング」の記事のコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。