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

Java Discussion :

écouter sur un port en java


Sujet :

Java

  1. #1
    Membre expérimenté
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Par défaut écouter sur un port en java
    bonjour à tous

    voici ce que je souhaite faire:
    je veux pouvoir recevoir via le réseau des objets que je traiterai dans l'application
    le temps entre chaque objet est inconnu et peut etre tres long

    j'ai essayé ceci:
    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
    if(port > 1 && port < 65001) {
    						/*creation du serveur */
    						try {
    				            serverSocket = new ServerSocket(port);
    				            soc = serverSocket.accept();
    				            ObjectInputStream objectInputStream = new ObjectInputStream(soc.getInputStream());
    				            while (true) {
    				            	try {
    				            		String chaine = (String)objectInputStream.readObject();
    				            		System.out.println("chaine: "+chaine);
    				            	} catch (Exception err) {
    				            		err.printStackTrace();
    				            		break;
    				            	}
    				            }
    				            System.out.println("Serveur cree sur le port "+port);
    				            portField.setEnabled(false);
    				            boutonDemarrer.setEnabled(false);
    là , pour essayer j'ai mis des simples chaines de caracteres mais ça fige mon application

    est-ce qu'il est possible de mettre comme un listener sur le objectInputStream afin d'exécuter une certaine méthode lors de l'arrivée d'un objet ?

    est-ce que vous voyez une autre maniere de faire ? (j'aimerai pouvoir continuer a utiliser mon application pendant qu'il attend les objets du réseau)

    j'espere avoir été assez clair dans mon explication :/

    merci d'avance à tous

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pour cela, il te faut :
    • Utiliser un Thread qui se ouvrira la socket et attendra les données.
    • Utiliser des InterruptibleChannel pour pouvoir stopper ton thread depuis ton programme principale
    • Utiliser un mécanisme de Listener pour le traitement des objets recu (cf FAQ : Comment créer son propre Listener ?)

    Je n'ai pas le temps de te proposer le code complet mais il y a plein d'exemple sur le forum...

    a++

  3. #3
    Membre expérimenté
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Par défaut
    merci, je vais essayer chercher dans cette voie

    je vais considérer cela comme résolu en attendant

  4. #4
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Je pense que t'as même pas besoin de listener. Comme c'est dans un thread à part, tout ce qui est après la méthode accept() est exécuté une fois que le client se connecte. Et comme c'est dans un thread, ça ne bloquera pas le programme.

    Nas'

  5. #5
    Membre expérimenté
    Avatar de berry
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2002
    Messages : 251
    Par défaut
    Citation Envoyé par Nasky
    Je pense que t'as même pas besoin de listener. Comme c'est dans un thread à part, tout ce qui est après la méthode accept() est exécuté une fois que le client se connecte. Et comme c'est dans un thread, ça ne bloquera pas le programme.

    Nas'
    mais ça ne risque pas de faire des boucles infinies ? car le morceau de code que j'ai cité plus haut commence a tourner en boucle une fois qu'un client se déconnecte

  6. #6
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Que ce soit dans un thread ou pas, ça va boucler à l'infini je pense quand le client se déconnecte.
    Si c'est toi qui code le client, tu peux envoyer un message qui dit au serveur de se déconnecter quand tu cliques sur la croix côté client.

    Nas'

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

Discussions similaires

  1. il y a t-il une solution pour écouter sur un port utilisé ?
    Par dearraed dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 07/05/2013, 15h26
  2. Réponses: 1
    Dernier message: 02/01/2013, 11h11
  3. Impossible d'écouter sur le port 1527!
    Par futuring dans le forum NetBeans
    Réponses: 2
    Dernier message: 24/05/2011, 10h42
  4. comment écouter sur un Port série spécifique
    Par sebac dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/01/2010, 14h22
  5. [CVS] Je n'arrive pas à écouter sur le port 2401 avec xinetd
    Par junior68 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 10/05/2009, 22h32

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