Sistema de software de monitorización remota de pantalla basado en JavaGUI

Resumen del índice de contenidos
………………………………………………………………11
Análisis del proyecto……………… ………………………… ………2
1.1 Análisis de demanda
1.2 Análisis de viabilidad
1.3 Análisis de puntos técnicos
2. Realización de funciones……………………………… ………………………3
2.1 Módulo de bandeja del sistema……………… ………………………………………………3
2.1.1 ¿Qué es la bandeja del sistema?
2.1.2 ¿Es necesario implementar la bandeja del sistema?
2.1.3 Cómo implementar la bandeja del sistema
2.1.4 Implementar código de bandeja del sistema
2.2 Protocolo personalizado………………………………………………………………5
2.2.1 Protocolo de red
2.2.2 ¿Por qué personalizar el protocolo?
2.2.3 Protocolo personalizado
2.2.4 Descripción de clase relacionada con el protocolo personalizado
2.2.5 Código central
2.3 Módulo de cliente…………………… ………………………………7
2.3.1 Obtener capturas de pantalla
2.3.2 Enviar imágenes al servidor según las especificaciones del protocolo
2.3.3 Mecanismo de salida del sistema
2.3.4 Código de cliente
2.4 Módulo del lado del servidor………… ……………………………………………9
2.4.1 Lógica del servidor
2.4.2 Procesamiento de múltiples clientes
2.4.3 Procesamiento del lado del servidor de solicitudes de mensajes de clientes

3. Configuración del entorno del servidor web…………………………………………11
3.1 Breve descripción
3.2 Herramientas
3.3 Proceso de construcción
3.4 Métodos de uso
4. Dificultades del proyecto………… ………………… …………………………………12
4.1 El problema del cliente enviando imágenes en un bucle
4.2 Operando el redibujado de JPanel en el hilo del lado del servidor
4.3 Manejando excepciones
5. Outlook………… …………… ……………………………………………14
6. Pensamientos……………………………………………………………… …………15
Adjunto: Representaciones de operación del software…………………………………………16

1. Análisis del proyecto
1.1 Análisis de requisitos
La etapa inicial del proyecto es estimar todo el sistema, lo que favorece nuestra comprensión de todo el sistema. Las funciones que el sistema de monitoreo de pantalla debe implementar son: a. Inicio de sesión
y salida del cliente
b .Captura de pantalla del cliente y envío continuo de imágenes
c.Función de bandeja del sistema del cliente
d.El servidor recibe continuamente imágenes y otras solicitudes del cliente
e.El servidor muestra el árbol de usuarios del usuario conectado
f.El árbol de usuarios se actualiza después del cliente sale
g. Después de que el cliente envía la imagen Se muestra en el lado del servidor
1.2 Análisis de viabilidad
¿Se pueden realizar las funciones mencionadas en el análisis de demanda? Aquí discutimos:
a. Al construir un protocolo personalizado, estas solicitudes se construyen en protocolos y se envían al servidor
B. La función de captura de pantalla se implementa a través de la clase Robot, y luego BufferedImage se convierte en un flujo de salida de matriz de bytes, luego se convierte en una matriz de bytes y se envía al servidor en un protocolo para lograr una transmisión continua de imágenes.
C. Utilice el objeto de la bandeja del sistema SystemTray para implementar.
D. Los datos se pueden analizar mediante el método de análisis de datos proporcionado por la clase de herramienta de protocolo personalizado y procesarse en consecuencia según el tipo de mensaje.
e. El árbol de usuarios se implementa utilizando JTree. DefaultTreeCellRenderer puede configurar la apariencia del árbol. Establecer un detector de selección de nodos para que JTree escuche los eventos de selección de nodos. f. Utilice el método reload()
de DefaultTreeModel para implementar
g. Puede personalizar JPanel a través del método paint(g) Dibujo Imagen 1.3 Toma
de análisis de puntos técnicos

Dos programas en la red intercambian datos a través de una conexión de comunicación bidireccional. Un extremo de esta conexión se llama socket. La API de Java proporciona soporte para Socket.

Protocolo de red personalizado
Un protocolo de red es una colección de reglas, estándares o convenciones establecidas para el intercambio de datos en una red informática. Para satisfacer nuestras necesidades, necesitamos personalizar un protocolo y proporcionarle la función de enviar y analizar mensajes.
Bandeja del sistema
La bandeja del sistema es un área especial, generalmente en la parte inferior del escritorio. El proyecto implica algunas operaciones en la bandeja del sistema. Proporcionamos al cliente la función de bandeja del sistema para facilitar a los usuarios desactivar el monitoreo.
IO stream
Stream es un concepto abstracto que representa la transferencia no estructurada de datos. La entrada y salida se realizan en forma de flujo y los datos se tratan como un orden de bytes o una secuencia de caracteres no estructurados. La operación de obtener datos de una secuencia se llama operación de extracción, la operación de agregar datos a una secuencia se llama operación de inserción y la secuencia utilizada para las operaciones de entrada y salida se llama secuencia IO. En otras palabras, el flujo IO se ingresa y sale en forma de flujo. Utilizamos principalmente DataOutputStream, DataInputSream, ByteArrayoOutputStream, etc.

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();
		}
	}
}

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/newlw/article/details/132706671
Recomendado
Clasificación