0% ont trouvé ce document utile (0 vote)
25 vues6 pages

Projet Partage Ecran Java

Le projet Java décrit une application de partage d'écran et de contrôle à distance, permettant à un utilisateur contrôleur d'interagir avec un ordinateur hôte. Il présente une architecture concurrente qui gère l'accès exclusif au contrôle tout en permettant à plusieurs clients de visualiser l'écran simultanément. Les fonctionnalités incluent une gestion de file d'attente pour le contrôle, une séparation des threads pour le streaming et le contrôle, ainsi qu'une authentification basique pour la sécurité.

Transféré par

Hasnae Moulim
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues6 pages

Projet Partage Ecran Java

Le projet Java décrit une application de partage d'écran et de contrôle à distance, permettant à un utilisateur contrôleur d'interagir avec un ordinateur hôte. Il présente une architecture concurrente qui gère l'accès exclusif au contrôle tout en permettant à plusieurs clients de visualiser l'écran simultanément. Les fonctionnalités incluent une gestion de file d'attente pour le contrôle, une séparation des threads pour le streaming et le contrôle, ainsi qu'une authentification basique pour la sécurité.

Transféré par

Hasnae Moulim
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Projet Java : Partage d'Écran et Contrôle à Distance

Concurrent

1. La conception
1.1-Diagramme de Cas d'Utilisation:

1. L'Utilisateur Contrôleur (celui qui prend le contrôle) :

 Envoyer Événements Clavier/Souris : Il peut utiliser son clavier et sa souris


pour agir sur l'ordinateur distant.
 Établir Connexion : Il peut se connecter à l'ordinateur distant.
o Authentifier Hôte (extends Établir Connexion) : Cela veut dire que
pour "Établir Connexion", il peut être nécessaire de "Authentifier Hôte"
(par exemple, entrer un mot de passe). Ce n'est pas toujours obligatoire,
mais c'est une option qui étend la connexion.
 Afficher Écran Distant : Il peut voir ce qui se passe sur l'écran de l'ordinateur
distant.
 Déconnecter : Il peut arrêter la connexion.

2. L'Utilisateur Hôte (celui dont l'ordinateur est contrôlé) :

 Exécuter Événements Locaux : Son ordinateur exécute les actions (clics,


touches) envoyées par le contrôleur.
 Démarrer Serveur : Il peut lancer le programme qui permet le contrôle à
distance sur son ordinateur.
 Arrêter Serveur : Il peut arrêter ce programme.
 Diffuser Écran : Son ordinateur envoie son écran au contrôleur.

1.2-Le diagramme de classe :

L’application est composée de deux parties principales :

1. Application Serveur (Hôte) : l'ordinateur qui partage son écran.


2. Application Client (Contrôleur) : l'ordinateur qui voit l'écran et contrôle à
distance.

🔹 Serveur (Hôte) :

 Capture l’écran (ScreenCapturer)


 Envoie les images au client
 Reçoit les actions clavier/souris et les exécute (ControlExecutor)

🔹 Client (Contrôleur) :

 Reçoit et affiche l’écran (ScreenReceiver)


 Envoie les actions de contrôle (InputSender)

🔹 Communication :

 Utilise des files d’attente (BlockingQueue)


 Échange via des flux Java (ObjectInputStream / ObjectOutputStream)
 Gère images compressées et événements clavier/souris

1.2-Le diagramme de composants:

 L'ordinateur client a une application qui a besoin de trois choses pour fonctionner :

 IRemoteScreenStream : Pour recevoir l'écran à distance.


 IControlSender : Pour envoyer des commandes (clics de souris, touches clavier).
 IRemoteConnection : Pour établir la connexion.

 L'ordinateur serveur a une application qui fournit ces trois choses :


 IRemoteScreenStream : Elle envoie l'écran au client.
 IRemoteCommandReceiver : Elle reçoit les commandes du client.
 IRemoteConnection : Elle gère la connexion.

2. Étude détaillée de l’existant

✅ Ce qui marche bien dans TeamViewer / AnyDesk du point de vue de la


concurrence :

Aspect Exemple concret

Multi-utilisateurs en Plusieurs personnes peuvent se connecter à une même machine


parallèle (ex. : en mode “spectateur”).

Un seul utilisateur peut contrôler la souris/clavier à la fois (évite


Contrôle exclusif
les conflits).

Les actions (clics, mouvements de souris, frappes clavier) sont


Réactivité fluide
traitées en temps réel, même avec plusieurs clients.

File d’attente ou Si plusieurs personnes demandent le contrôle, il y a un système de


priorisation priorité.

❌ Ce qui peut poser problème (points faibles liés à la programmation concurrentielle)


:

Point faible Exemple concret

Si deux clients prennent le contrôle en même temps, cela peut


❗ Accès simultané non
provoquer un conflit de threads (souris qui bouge dans tous
coordonné
les sens).

❗ Pas de file d’attente ou Si 3 clients veulent le contrôle, c’est souvent celui qui clique
synchronisation le plus vite qui gagne. Ce n’est pas juste, ni bien géré.

Si un utilisateur garde le contrôle trop longtemps, les autres


❗ Blocage ou famine
attendent indéfiniment sans système de “temps de session”.
Point faible Exemple concret

❗ Pas de gestion fine des Le traitement des actions clavier/souris n’est pas toujours
threads optimisé avec des threads dédiés pour chaque tâche.

2. Notre solution : proposer une architecture Java concurrente qui


corrige ça
Objectif principal :

Créer une application Java de partage d’écran avec contrôle à distance dans laquelle :

 plusieurs clients peuvent se connecter en mode spectateur (lecture seule),

 un seul client à la fois peut contrôler la machine (accès exclusif),

 les accès concurrents sont gérés proprement avec des threads synchronisés.

Les fonctionnalités concurrentielles de ton application :

Fonction Détail technique

✅ Accès concurrent en Plusieurs clients peuvent voir l’écran en même temps


lecture (multiclients) (thread par client).

Un seul client peut envoyer des actions clavier/souris


✅ Contrôle exclusif
(verrou avec synchronized, Semaphore, ou Lock).

Si plusieurs clients demandent le contrôle, ils sont mis en


✅ Gestion de file d’attente
file avec priorité FIFO (queue + synchronisation).

Chaque client peut avoir un temps max de contrôle (ex. : 2


✅ Temps de contrôle limité
minutes), puis libération automatique.

Un thread pour le streaming d’écran, un autre pour le


✅ Séparation des threads
contrôle utilisateur, un autre pour la file d’attente.

Authentification basique pour chaque client (nom


✅ Sécurité d’accès simplifiée
d’utilisateur/mot de passe pour gérer qui a le droit de quoi).
Exemple de situation concrète :

 Safia (client 1) se connecte → elle peut voir l’écran.

 Hasnae (client 2) se connecte → il voit aussi.

 Hasnae demande le contrôle → il l’obtient.

 Safia demande aussi le contrôle → elle est mise en file.

 Après 2 min, le contrôle passe automatiquement à Safia.

Grâce à tes mécanismes de synchronisation, tout cela est fluide, sans conflit, et sans
blocage.

Vous aimerez peut-être aussi