UDP の理論については詳しく説明しません。UDP に関する HelloWorld プログラムを紹介します。コードはわかりやすいので、初心者の皆さんのお役に立てれば幸いです。 もちろん、実際のところ、私はこの分野でまだ始めたばかりです! まず、サーバー コードを記述します。サーバーは、アクセスをリッスンするためにローカル IP とポートをバインドします。 パッケージ udp; java.io.IOException をインポートします。 java.net.DatagramPacket をインポートします。 java.net.DatagramSocket をインポートします。 java.net.InetSocketAddress をインポートします。 /** * UDP サービスクラス */ パブリッククラス UdpServerSocket { プライベートbyte[]バッファ = 新しいbyte[1024]; プライベート静的 DatagramSocket ds = null; プライベート DatagramPacket パケット = null; プライベート InetSocketAddress socketAddress = null; /** * テスト方法 */ パブリック静的void main(String[] args)は例外をスローします{ 文字列 serverHost = "127.0.0.1"; int サーバーポート = 3344; UdpServerSocket udpServerSocket = 新しい UdpServerSocket(serverHost, サーバーポート); (真)の間{ udpServerSocket.receive(); udpServerSocket.response("こんにちは、食事はしましたか?"); } } /** * コンストラクター、ホストとポートをバインド */ パブリック UdpServerSocket(String ホスト、int ポート) 例外をスローします { socketAddress = 新しいInetSocketAddress(ホスト、ポート); ds = 新しい DatagramSocket(ソケットアドレス); System.out.println("サーバーが起動しました!"); } /** * データパケットを受信します。このメソッドはスレッドをブロックします */ パブリックファイナル文字列受信()はIOExceptionをスローします{ パケット = 新しい DatagramPacket(バッファ、バッファ長); ds.receive(パケット); 文字列情報 = 新しい文字列(packet.getData(), 0, packet.getLength()); System.out.println("情報を受信: " + info); 情報を返します。 } /** * 応答パケットを要求元に送信する */ パブリック最終voidレスポンス(String info)はIOExceptionをスローします{ System.out.println("クライアントアドレス: " + packet.getAddress().getHostAddress() + ",ポート:" + packet.getPort()); DatagramPacket dp = 新しいDatagramPacket(バッファ、バッファ長、パケット .getAddress()、パケット.getPort()); dp.setData(info.getBytes()); ds.send(dp); } } 実行後、サーバーが正常に実行され、プログラムがポートのリッスンを開始し、受信方法がブロックされ、アクセスがある場合にのみ続行されるというメッセージが表示されます。 アクセスするためのクライアントを作成すると、インターネット上の例はすべて DatagramSocket オブジェクトを直接作成しますが、実際にはどのポートを使用しているかはわかりません。ここでは、作成時にバインドするポートを指定します。実際、非常に簡単です。オブジェクトを初期化するときにポート パラメーターを渡すだけです。 ここでクライアントにアクセスすると、クライアントは IP とポートを印刷します。 クライアントコードを見てみましょう: パッケージ udp; java.io.* をインポートします。 java.net.* をインポートします。 /** * UDP クライアント プログラム。サーバーにデータを送信し、サーバーの応答情報を受信するために使用されます。*/ パブリッククラス UdpClientSocket { プライベートbyte[]バッファ = 新しいbyte[1024]; プライベート静的 DatagramSocket ds = null; /** * クライアントのパケット送信方法と応答情報の受信方法をテストします */ パブリック静的void main(String[] args)は例外をスローします{ UdpClientSocket クライアント = 新しい UdpClientSocket(); 文字列 serverHost = "127.0.0.1"; int サーバーポート = 3344; client.send(serverHost, serverPort, ("こんにちは!").getBytes()); バイト[] bt = client.receive(); System.out.println("サーバー応答データ: " + new String(bt)); // 接続を閉じる try { ds.close(); } catch (例外例) { 例:printStackTrace(); } } /** * コンストラクター、UDPクライアントの作成 */ パブリック UdpClientSocket() は例外をスローします { ds = new DatagramSocket(8899); // クライアントとしてローカルポートにバインドする } /** * 指定されたサーバーにデータ情報を送信します */ パブリックファイナルボイド送信(ファイナルストリングホスト、ファイナルイントポート、 最終byte[]バイト)はIOExceptionをスローします{ DatagramPacket dp = 新しい DatagramPacket(bytes, bytes.length, InetAddress.getByName(host), port); ds.send(dp); } /** * 指定されたサーバーから送り返されたデータを受信します */ パブリックファイナルバイト[]受信() 例外をスローします { DatagramPacket dp = 新しい DatagramPacket(バッファ、バッファ長); ds.receive(dp); byte[]データ = new byte[dp.getLength()]; System.arraycopy(dp.getData(), 0, データ, 0, dp.getLength()); データを返します。 } } プログラムを直接実行して効果を確認してください。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: 生年月日を年齢に変換し、グループ化して人数を数えるMySQLの例
目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...
テスターとして、学習プロセス中に Linux でソフトウェアをインストールする必要が頻繁にある場合が...
目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...
setinterval を使用すると、ページを開いた直後に 1 秒の遅延後に実行されることがわかりま...
Pure jsは、参照用にワンクリックで編集可能なテーブル(トランスクリプトに似たもの)を実装してい...
1. はじめに周知のように、データベース ミドルウェアの読み取り/書き込み分離のアプリケーション シ...
<br />言葉は、人間の思考や感情を伝えるために必然的に生み出されるものです。人類の文...
C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...
MySQL 8.0.22のインストールと設定方法のグラフィックチュートリアル、参考までに、具体的な内...
設定手順Linux システム: CentOS-7.0 MySQL バージョン: 5.7.21 Lin...
最近何かをするときにラベル タグを使用しました。以前はラベル タグをほとんど使用していなかったため、...
置換を削除したり文字列を削除したりできる tr コマンドは、誰もがよく知っています。 英語では、英語...
1. 公式ウェブサイトから 64 ビットの zip ファイルをダウンロードします。 2. インスト...
序文開発プロセスでは、10 進データ型がよく使用されます。 MySQL では、小数点は正確なデータ型...
Sublime Text 2 は、軽量でシンプル、効率的なクロスプラットフォーム エディターです。ブ...