JavaGUIベースのリモート画面監視ソフトウェアシステム

目次 要約
……………………………………………………………………11
. プロジェクト分析………………………………………… …………2
1.1 需要分析
1.2 実現可能性分析
1.3 技術ポイント分析
2. 機能実現…………………………………………………………3
2.1 システムトレイモジュール……………… …………………………………………………3
2.1.1 システムトレイとは何ですか?
2.1.2 システムトレイの実装は必要ですか?
2.1.3 システムトレイの実装方法
2.1.4システム トレイ コードの実装
2.2 カスタム プロトコル………………………………………………………………5
2.2.1 ネットワーク プロトコル
2.2.2 プロトコルをカスタマイズする理由
2.2.3 カスタム プロトコル
2.2.4 カスタム プロトコル関連のクラスの説明
2.2.5 コア コード
2.3 クライアント モジュール……………………………………………………7
2.3.1 スクリーンショットの取得
2.3.2 サーバーへの画像の送信プロトコル仕様による
2.3.3 システム終了メカニズム
2.3.4 クライアントコード
2.4 サーバー側モジュール……………………………………………………9
2.4.1 サーバーロジック
2.4.2複数のクライアントの処理
2.4.3 クライアントのメッセージ要求のサーバー側の処理

3. Webサーバーの環境構成……………………………………………………11
3.1 簡単な説明
3.2 ツール
3.3 構築プロセス
3.4 利用方法
4. プロジェクトの難しさ……………………………… …………………………………………12
4.1 クライアントがループで画像を送信する問題
4.2 サーバー側スレッドでの JPanel 再描画の操作
4.3 例外の処理
5. Outlook………………………… ……………………………………………………………………14
6. 感想………………………………………………………………………………15
添付資料:ソフトウェア動作レンダリング……………………………………………………16

1. プロジェクト分析
1.1 要件分析
プロジェクトの初期段階では、システム全体の理解に役立つシステム全体の見積もりを行います. 画面監視システムが実装する必要がある機能は次のとおりです: a. クライアントのログインと終了
b
. . クライアント 画面キャプチャと画像の連続送信
c. クライアント システム トレイ機能
d. サーバーはクライアントから画像やその他の要求を継続的に受信
e. サーバーは接続されているユーザーのユーザー ツリーを表示
f. ユーザー ツリーはクライアントの送信後に更新されますg. クライアントが画像を送信
した後、サーバー側に表示されます
1.2 実現可能性分析
需要分析で言及された機能は実現できますか? ここで説明します:
a. カスタム プロトコルを構築することにより、これらのリクエストはプロトコルに構築され、サーバー
b. スクリーンショット機能は Robot クラスを通じて実装され、BufferedImage はバイト配列出力ストリームに変換され、さらにバイト配列に変換され、画像の連続送信を実現するプロトコルでサーバーに送信されます。
c. システム トレイ オブジェクト SystemTray を使用して実装します。
d. データは、カスタム プロトコル ツール クラスによって提供されるデータ解析メソッドを通じて解析され、メッセージ タイプに応じて処理されます。
e. ユーザー ツリーは JTree を使用して実装されます。DefaultTreeCellRenderer はツリーの外観を設定できます。JTree のノード選択リスナーを設定して、ノード選択イベントをリッスンします。 f. DefaultTreeModel の reload() メソッドを使用して実装します。 g. カスタマイズでき
ます
。 JPanelによるpaint(g)メソッドの描画図
1.3 技術ポイント分析
ソケット
ネットワーク上の 2 つのプログラムは、双方向通信接続を通じてデータを交換します。この接続の一端はソケットと呼ばれます。Java API はソケットのサポートを提供します。

カスタム ネットワーク プロトコル
ネットワーク プロトコルは、コンピュータ ネットワーク内でのデータ交換のために確立されたルール、標準、または規約の集合です。ニーズを満たすには、プロトコルをカスタマイズし、メッセージの送信とメッセージの解析の機能を提供する必要があります。
システム トレイ システム
トレイは特別な領域で、通常はデスクトップの下部にあります。プロジェクトではシステム トレイ上でいくつかの操作が行われます。ユーザーが監視を簡単にオフにできるように、クライアントにシステム トレイ機能を提供します。
IO ストリーム
ストリームは、データの非構造化転送を表す抽象的な概念です。入出力はストリーム形式で実行され、データは非構造化バイト オーダーまたは文字シーケンスとして扱われます。ストリームからデータを取得する操作を抽出操作、ストリームにデータを追加する操作を挿入操作と呼び、入出力操作に使用されるストリームを IO ストリームと呼びます。つまり、IOストリームはストリーム形式で入出力されます。主にDataOutputStream、DataInputSream、ByteArrayoOutputStreamなどを使用します。

package Server;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

public class Server {
    
    
	public Map<String,Socket> client=new HashMap<>();
	public Map<String,Socket> clientManager=new HashMap<>();
	public static void main(String[] args) {
    
    
		try {
    
    
			ServerSocket serverSocket=new ServerSocket(33000);
			Server server=new Server();
			while(true){
    
    
				Socket socket=serverSocket.accept();
				DataInputStream dis=new DataInputStream(socket.getInputStream());
				String power=dis.readUTF();
				String clientKey="client"+socket.getInetAddress().getAddress();
				String managerKey="manager"+socket.getInetAddress().getAddress();
				if(power!=null&&power.equals("client")){
    
    
					if(!server.client.containsKey(clientKey)) server.client.put(clientKey,socket);
					new Thread(new HandleClient(socket)).start();
				}else{
    
    
					if(!server.clientManager.containsKey(managerKey)) server.clientManager.put(managerKey,socket);
					new Thread(new HandleManager(socket)).start();
				}
			}
			
		} catch (IOException e) {
    
    
			e.printStackTrace();
		}
	}
}

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/newlw/article/details/132706671