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 :

Socket, Thread et interface graphique


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut Socket, Thread et interface graphique
    Salut
    Je développe une application client serveur avec interface graphique, mais je suis coincé sur le fait que je doit créer un thread qui s'occupe de la réception de données, mais je ne sais pas comment les afficher dans un JTextField
    Merci d'avance

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par archer Voir le message
    Salut
    Je développe une application client serveur avec interface graphique, mais je suis coincé sur le fait que je doit créer un thread qui s'occupe de la réception de données, mais je ne sais pas comment les afficher dans un JTextField
    Merci d'avance
    La classe SwingUtilities, et plus précisément la fonction invokeLater te permettra de passer en argument une instance de Runnable pour exécuter du code dans le thread de swing (ou EDT pour les intimes).

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SwingUtilities.invokeLater(
        new Runnable() {
            public void run() {
                System.out.println("Hello World on " + Thread.currentThread());
            }
        };
    );
    Ainsi, le code dédié à l'utilisation de la socket (principalement l'appel aux fonctions bloquantes comme 'read()') se trouvera dans le thread qui lui sera dédié. Lorsque ledit code aura déterminé qu'il a reçu un message complet et digne d'intérêt pour ton TextField, il utilisera 'invokeLater' pour le prévenir.

  3. #3
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut
    Salut
    Merci pour la réponse, j'ai une autre question:
    En fait dans mon application il y a différents types de messages que je doit échanger avec le serveur, et donc je veux implémenter un protocole de communication, le problème c'est que selon le message (entête du message) je dois envoyer différents types de données (String, classe qui ne contient que des attributs, ...)
    pouvez vous m'indiquer comment je peux les envoyer, et quelle type de Stream je dois utiliser.
    Merci encore une fois

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par archer Voir le message
    je dois envoyer différents types de données (String, classe qui ne contient que des attributs, ...)
    pouvez vous m'indiquer comment je peux les envoyer, et quelle type de Stream je dois utiliser.
    Les sockets ont pour unité de base l'octet (ou byte) pour tout ce qui concerne les données échangées. Tu dois donc:
    - convertir en tableaux de byte les données à émettre avant de les passer à ta socket.
    - récupérer d'autres tableaux de bytes de ta socket puis les décoder pour lire les données reçues.

    Il te faut donc un conteneur capable de lire et d'écrire différents types primitifs de données (char, int, float, String, ...) vers et depuis un byte array, si possible de façon efficiente.

    Ca tombe bien, java.nio.ByteBuffer est justement là pour ça

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

Discussions similaires

  1. Threads et interface graphique
    Par dacosta67 dans le forum Multithreading
    Réponses: 1
    Dernier message: 14/05/2011, 12h49
  2. Utilisation des threads et interface graphique
    Par cyberspy2999 dans le forum Débuter
    Réponses: 1
    Dernier message: 20/02/2011, 21h27
  3. Thread et interface graphique
    Par archer dans le forum C#
    Réponses: 5
    Dernier message: 02/04/2008, 06h06
  4. Réponses: 1
    Dernier message: 01/02/2008, 12h59
  5. Interface graphique et thread
    Par freddyboy dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/06/2007, 15h06

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