IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

communication tcp avec Objects


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut communication tcp avec Objects
    Bonjour à tous,
    j'ai quelques difficultés sur la compréhension de la communication TCP, j'espère que vous pourrez m'aider. Je dois faire communiquer deux IHM (une pointeuse qui envoie les données de pointage et une appli Centrale qui les récupère) et je ne sais pas vraiment comment m'y prendre. Dois-je maintenir une connexion et des qu'un employé pointe, on envoie les données ? ou bien a caque pointage établir une nouvelle connexion et envoyé ? .. je suis un peu perdu sur le fait de faire communiquer deux appli entre elles. Si quelqu'un aurait un avis sur la question ca m'aiderai beaucoup.
    Merci d'avance !

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Les deux approches sont possibles. Mais pour une pointeuse, tu n'as pas besoin de délai de réponse ultra-rapide et il y a potentiellement de longues périodes sans communication. Donc je pense qu’établir une nouvelle connexion à chaque pointage serait péférable.

    Pour faire communiquer deux applications au travers du réseau, le plus basique est d'utiliser des Sockets. Ca va pas être possible de tout détailler sur un forum mais tu as par exemple ce tuto :
    https://jmdoudoux.developpez.com/cou...-net.php#net-4

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    D'accord je vais regarder ca , merci pour ta réponse

  4. #4
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    Normalement chaque pointeuse est autonome et peut supporter de ne plus être connectée pendant quelques heures à son serveur. L'essentiel dans ce cadre est de conserver le pointage de chaque employé ; une coupure réseau ne doit pas avoir de conséquences sur le temps de travail de chacun, sinon gare aux abus ! (de l'employé ou de l'employeur).

    En informatique de gestion RH, le point le plus crucial a toujours été pour les employés de pouvoir poser des congés et que leur temps de travail soit correctement décompté. Le moindre écart perçu donne lieu à réclamation ! (c'est du vécu !)

    La paye aussi évidemment est importante, mais il est difficile de la contrôler de manière très précise (lire une fiche de paye n'est pas simple), alors que les heures de pointage...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonjour Cincinnatus,
    heureusement pour moi je suis encore en phase d'apprentissage de l'informatique. ^^.
    Cependant nous avons eu des directives quant au coupures de connexion. Si la pointeuse ne peut envoyé ses données à l'appli principale elle peut sérialiser les données dans un fichier local et dès que la connexion sera rétablie elle les envoient. Et pour la conception d'un client serveur j'aurai aimé une petite précision : je vois dans des exemples les méthode writeObject et readObject des ObjectOutputStream et ObjectInputStream qui s'utilisent des fois avec fichier et des fois sans. Quelles sont les différences ?

  6. #6
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Le ObjectOutputStream s'utilise avec un flux, il y a différents type de flux : vers un fichier, vers un socket réseau, vers la console, ... Tout dépends de l'usage que tu souhaites faire de l'objet que tu sérialises.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Mmmh d'accord, la je souhaite envoyé les données sur un autre ordinateur qui est sur un réseau différent donc je dois utilisé le flux de socket réseaux si je comprend bien.
    Ca va beaucoup m'aider merci !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Voila ce que j'ai fait : si vous pouviez me dire ce qui ne va pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    public class TCPServer extends Thread {
       private ServerSocket serverSocket;
       static Object objet;
     
     
       public TCPServer(int port) throws IOException {
          serverSocket = new ServerSocket(port);
       }
     
     
       public void run() {
     
          while(true) {
             try {
                System.out.println("Serveur attend le client sur le port " + serverSocket.getLocalPort() + "...");
                Socket server = serverSocket.accept();
     
                System.out.println("Serveur connecté à la socket d'adresse : " + server.getRemoteSocketAddress());
                ObjectInputStream is = new ObjectInputStream(server.getInputStream());
     
                objet = is.readObject();
     
                System.out.println(objet);
             } 
             catch (SocketTimeoutException s) {
                System.out.println("Socket à atteint son temps limite");
                break;
             } 
             catch (IOException e) {
                e.printStackTrace();
                break;
             } 
             catch (ClassNotFoundException e) {
    			e.printStackTrace();
             } 
          }
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public class TCPClient {
     
     
     
    	public void SendObject(Object objet, String serverName, int port) throws ClassNotFoundException{
    		 try {
    	         System.out.println("Connexion au serveur d'adresse " + serverName + " sur le port client " + port);
    	         Socket client = new Socket(serverName, port);
     
    	         System.out.println("Connexion établie sur le client d'adresse " + client.getRemoteSocketAddress());
     
    	         ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
     
    	         out.writeObject(objet + " from " + client.getLocalSocketAddress());
     
    	         client.close();
    		 }
    		 catch (IOException e) {
    	         e.printStackTrace();
    	     }
    	} 
    }

  9. #9
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    A première vue ça me semble pas mal a part le out.writeObject(objet + " from " + client.getLocalSocketAddress()) dont je ne comprend pas le but. Si tu veut récupérer un objet il faut envoyer le même type d'objet et pas y ajouter une chaine de caractère qui semble prévue pour le débogage.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Oui effectivement ca na pas de sens ^^. D'après vous avoir un attribut de type Object en static dans la classe serveur est la meilleur façon pour récupérer l'object lu par readObject() ?

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben non, pourquoi static ? Il n'y en a qu'une seule, de pointeuse ? Enfin, de toute façon quel intérêt qu'il soit static ?

    Et pour le type Object, c'est bizarre aussi. On peut pas demander les données d'un Object, il faut le cast d'abord vers sa classe réelle, alors pourquoi ne pas le faire dès que possible ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. communication tcp/ip avec labview
    Par sa7lia1990 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 08/05/2012, 11h28
  2. Probléme de communication TCP/IP avec fonction send bloqué
    Par TheToune dans le forum Développement
    Réponses: 0
    Dernier message: 21/09/2011, 10h05
  3. Communication TCP avec LabVIEW
    Par sanzero dans le forum LabVIEW
    Réponses: 5
    Dernier message: 28/04/2011, 10h22
  4. Réponses: 1
    Dernier message: 20/05/2009, 09h55
  5. Communication TCP/IP avec Flash
    Par Rodrigue dans le forum Dynamique
    Réponses: 3
    Dernier message: 23/10/2006, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo