ホームページ ウェブフロントエンド jsチュートリアル Javaを使って簡易サーバー/クライアントエコー機能を実装する方法の紹介_基礎知識

Javaを使って簡易サーバー/クライアントエコー機能を実装する方法の紹介_基礎知識

May 16, 2016 pm 05:34 PM
client server

ソケットは、特定のプログラミング モデルに基づくプロセス間通信リンクのエンドポイントを指します。この特定のプログラミング モデルの人気のため、ソケットという名前は Java テクノロジを含む他の分野で再利用されています。

接続を確立する場合、1 台のマシンが接続を待機するプロセスを実行し、別のマシンが最初のマシンへの接続を試行する必要があります。この電話システムも同様です。一方の当事者が通話を開始し、もう一方の当事者が電話を待つ必要があります。

Java ネットワーク モデル図

以下では、「echo」機能を備えたサーバーとクライアントを使用して、ネットワーク アプリケーションを作成するための java.net パッケージのアプリケーションを紹介します。

この例の主な機能は、サーバー側のプログラムがクライアントの入力を待機し、読み取った情報をクライアントにエコーし、同時にサーバー側のコンソールに出力することです。クライアントはコンソールから情報を受信した後、クライアントに入力を送信し、サーバーからエコー データを受信して​​、それをコンソールに表示します。

クライアント プログラム コードは次のとおりです:

コードをコピー コードは次のとおりです:

package com.javaapp.ch11;
import java.io.*;
import java.net.*;
/**
* 説明: 「エコー」機能を備えたサーバー側およびクライアント側のプログラム
*/
public class EchoClientDemo {
// サーバー側のサービス ポート。
public static Final int SERVERPORT = 990;
public static void main(String[] args) {
try {
// 接続ソケットを確立します。
Socket s = new Socket("localhost",SERVERPORT);
System.out.println("socket = " s);
// 新しいネットワーク接続の入力ストリームを作成します。
BufferedReader in = 新しいbufferedReader
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())), true); リーダー。
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("文字列を入力してください。終了するには BYE と入力してください! ");
while (true) {
// コンソールから入力された文字列を読み取り、ネットワーク接続に出力します。つまり、データをサーバーに送信します。
out.println(stdin.readLine());
String str = in.readLine();
String str = in.readLine();
。まず、java.net パッケージの Socket クラスを使用して接続ソケットを確立し、次に Socket オブジェクトの getInputStream メソッドを使用してサーバーからデータを受信し、Socket オブジェクトの getOuputStream メソッドを使用してサーバーにデータを送信します。入力ストリームと出力ストリームを作成した後は、ファイルと同じ方法でデータの読み取りと書き込みを行うことができます。

複数のクライアントをサポートする「echo」サーバー側プログラム コードは次のとおりです:




コードをコピーします


コードは次のとおりです。以下のように:

package com.javaapp.ch11;
import java.io.*;
import java.net.*;
/**
* 説明: マルチクライアント「エコー」サーバー側プログラムをサポート
*/
public class EchoServerThreadDemo {
// サーバー側のサービス ポート。
public static Final int SERVERPORT = 990;
public static void main(String[] args) {
try {
// 接続されたクライアントのシリアル番号。
int number = 1;
int number = 1;
ServerSocket s = new ServerSocket(SERVERPORT);
System.out.println("Started: " s);
while (true) {
、接続ソケット文字を確立します。
ソケット受信 = s.accept();
System.out.println("接続 " 番号 " が受け入れられました: ");
System.out.println(incoming);
スレッドは次の目的で使用されます。サーバーとクライアント間のデータ送信。
// メインプログラムは、リクエストが来ているかどうかを監視し続けます。
System.err.println ("IOException");
}
}
}
class EchoThread extends Thread {
private Socket s ;
int n;
public EchoThread(Socket incoming,int number ) {
s = incoming;
n = number;
}
} public void run() {
{
を試してください
BufferedReader in = 新しいbufferedReader
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())),true);
System.out.println("Hello! 終了するには BYE と入力してください。" );
// クライアントの入力をエコーし​​ます。
While (TRUE) {
// ネットワークから 1 行を読み取り、クライアントからデータを受信します。
String line = in.readLine();
文字列行 = in.readLine();
//受信したデータが空の場合(直接Enterを押した場合は空データではありません)、終了します。ループを終了して接続を閉じます。
if (行 == {
System.out.println( "クライアント「 n 」は BYE に入りました!");
System.out }
("Echo" n ":" line);
// ネットワークに接続して行を出力します。つまり、データをクライアントに送信します。
out.println("Echo " n ": " line);
s.close();
} catch (IOException e) {
System.err.println("IOException");
}
}
}


サーバー側プログラムでは、まず java.net パッケージの ServerSocket クラスを使用してサーバー側のリスニング ソケットを作成します。次に、ServerSocket クラスの accept メソッドを使用して、ユーザー要求を待機して受信します。サーバーは接続要求を受信すると、サーバーとクライアント間のデータ送信を個別に処理するスレッドを開始します。サーバー側データの受信と送信は、上で説明したクライアント側データの送信と導入と同じです。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Mar 06, 2024 am 10:37 AM

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

Windows Server 2025 プレビュー バージョンがアップデートを歓迎、Microsoft が Insider テスト エクスペリエンスを改善 Windows Server 2025 プレビュー バージョンがアップデートを歓迎、Microsoft が Insider テスト エクスペリエンスを改善 Feb 19, 2024 pm 02:36 PM

Windows Server のビルド 26040 バージョンのリリースに際し、Microsoft は製品の正式名を Windows Server 2025 と発表しました。 Windows11WindowsInsiderCanaryChannel バージョン build26040 もリリースされました。何年も前に、誰かが Windows NT をワークステーション モードからサーバー モードに変換し、Microsoft オペレーティング システムのさまざまなバージョン間の共通点を示したことをまだ覚えている人もいるでしょう。 Microsoft の現在のバージョンのサーバー オペレーティング システムと Windows 11 には明らかな違いがありますが、詳細に注目する人は、なぜ Windows Server がブランドを更新したのか、

Nginx のバージョン名を変更して Web サーバーを偽装する方法 Nginx のバージョン名を変更して Web サーバーを偽装する方法 May 14, 2023 pm 09:19 PM

nginx のデフォルト名を変更する方法、少し偽装することも、インストールすることもできますヒント: 通常、変更は nginx がコンパイルされる前に行われます。変更後、コードは次のように再コンパイルする必要があります: scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

Microsoft、Windows Server vNext プレビュー バージョン 25335 をリリース Microsoft、Windows Server vNext プレビュー バージョン 25335 をリリース Jan 10, 2024 am 08:49 AM

Microsoft はデスクトップ向けの Win11 プレビュー アップデートをリリースしましたが、本日、Windows Server 長期サービス チャネル (LTSC) プレビュー ビルド 25335 もリリースしました。いつものように、Microsoft は完全な変更ログを公開しておらず、対応するブログ投稿さえ提供していません。 Microsoft は、Windows Server プレビュー バージョンの更新ログを Canary チャネル バージョンと同じになるように調整しました。新しいコンテンツが導入されない場合、公式ブログ投稿は投稿されません。 IT Home からのメモ: サーバー ブランドは更新されておらず、プレビュー バージョンではまだ Windows Server 2022 です。さらに、Microsoft では、これらのバージョンを、すでに市場に出ている Windows バージョンではなく、Windows Server vNext と呼んでいます。

Microsoft が Windows Server 26080 プレビュー アップデートをリリース: フィードバック ハブの障害を修正 Microsoft が Windows Server 26080 プレビュー アップデートをリリース: フィードバック ハブの障害を修正 Mar 14, 2024 pm 07:11 PM

IT House は 3 月 14 日、デスクトップ向けの Windows 11 Build 26080 プレビュー アップデートに加えて、Microsoft が Windows Server Build 26080 プレビュー アップデートもアップデートして開始したと報じました。次期 Windows Server Long Term Servicing Channel (LTSC) の最新プレビュー バージョンとして、Windows Server Build 26080 は Data Center Edition と Standard Edition を提供し、ユーザーはデスクトップ エクスペリエンスと Server Core インストール オプションを選択できます。このリリースには、コンテナー ホスト用の年次チャネルと、仮想マシン評価専用の Azure リリースも含まれています。 IT House は、X ソーシャル メディアにクエリを実行します。ユーザー フィードバックは、右下隅にある [Copilot] ボタンをクリックします。

Nginx のサーバーと場所のマッチング ロジックは何ですか? Nginx のサーバーと場所のマッチング ロジックは何ですか? May 12, 2023 am 11:10 AM

サーバーのマッチング ロジック nginx がリクエストを実行するサーバー ブロックを決定するとき、主にサーバー ブロックの listen フィールドと server_name フィールドに焦点を当てます。listen コマンドの listen フィールドは、サーバー応答の IP とポートを定義します。listen フィールドが明示的に指定されていない場合は、設定されている場合、デフォルトのリッスン 0.0.0.0:80 (ルート) または 0.0.0.0:8080 (非ルート) リッスンは、IP とポートの組み合わせ、単一の IP、デフォルトでポート 80 でリッスンする、単一の IP として設定できます。ポート、およびデフォルトですべての IP インターフェイスでリッスンする unixsocket パス。最後のエントリは通常、異なるポートでのみ使用されます。

Ubuntu Server 11.04 に GNOME 3 をインストールする手順 Ubuntu Server 11.04 に GNOME 3 をインストールする手順 Dec 31, 2023 pm 03:59 PM

まだ完成していない GNOME 3 はもちろん、Ubuntu Server 11.04 をインストールするときにグラフィカル インターフェイスをインストールする必要もないと思われる場合は、 。または、ARCH+GNOME3 でビルドする必要があります。したがって、これ以上読んで時間を無駄にしないでください。 2泊1日かかり、N回再インストールしました。ついに何かが生まれました。簡単ではない。早速、本題に入りましょう: ハードウェア: ThinkPad 1 台(X61 の場合) 2. ブート オプション インターフェイスに入り、USB ブートを選択し、Ubu のインストールを選択します。

Firewalld Linux ファイアウォール Firewalld Linux ファイアウォール Feb 19, 2024 pm 06:24 PM

ファイアウォール ファイアウォール firewalld サービスには、CLI と GUI の 2 つの動作モードがあります。 iptables と比較して、ファイアウォールは動的更新をサポートし、ゾーンの概念を導入します。つまり、ゾーンとは、ファイアウォールによって事前定義された一連のファイアウォール ポリシーを指します。これにより、これらのポリシーをファイアウォール間で迅速に切り替えることができるため、ファイアウォールの切り替え効率とアプリケーション速度が大幅に向上します。ゾーンのデフォルト ポリシー ルールを信頼すると、ホームへのすべてのパケットが受信トラフィックを拒否できますが、ssh、mdns、ipp-client、および dhcpv6-client サービスは、ホーム ゾーンの内部同等の機能を通過して受信トラフィックを拒否することが許可されます。

See all articles