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 :

Récupérer un socket utilisé pour l'utiliser ailleurs


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut Récupérer un socket utilisé pour l'utiliser ailleurs
    Bonjour,

    Je m'excuse d'avance pour le titre peu clair (si quelqu'un a une idée ). J'ai un petit problème sur mon serveur en Java. J'ai une classe ConnectSocket qui accepte ou refuse les connections en fonction de tests passés dans la base de données,... Cette classe ne fait rien d'autre que gérer les nouvelles connections.

    Pour ce faire, je reçois des objets à partir des clients et ces objets contiennent les login, password,... Pour faire rapide, on va dire que je récupère les InputStream et OuputStream du socket pour pouvoir exécuter ces tests.

    Si la connexion est refusée, j'envoie un message avec l'explication du refus et si la connexion est acceptée, je crée de nouveaux objets Client par exemple et dans cette classe, je gère le client (envoi/réception de messages de ce client). Pour le créer, j'ai un constructeur qui prend en paramètre le login, password et le socket.

    Voici le problème, dans ConnectSocket, je réinitialise les objets Socket, InputStream, OutpuStream pour la prochaine connexion (donc j'utilise la méthode .close() de ces différents objets après avoir créé le client). Une fois que cela est fait, je lance un thread avec le client. Le thread récupère les InputStream et OutputStream du socket. Mais il me lance une IOExecption qui me dit que le socket est fermé.

    J'ai beau vérifier dans mon code, je ne ferme pas le socket dans ConnectSocket avant de créer mon objet Client et dans l'application client, le socket est toujours ouvert. Dans le constructeur du client, quand je fais socket.toString(), il m'affiche bien l'ip de la machine connectée.

    Le socket est bien récupéré mais je n'arrive plus à ouvrir les InputStream,... dois-je aussi les faire passer en paramètre du Client? Pourquoi ne puis-je pas les re-récupérer après?

    Merci d'avance pour vos lumières.

  2. #2
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Je me réponds à moi-même, ça pourra peut-être aider quelqu'un plus tard.

    Le problème: re-récupérer les entrées/sorties d'un socket.

    La solution 1: Faire passer le socket dans le constructeur du nouvel objet Client. Fermer les entrées/sorties dans le thread ConnectSocket et les rouvrir dans l'objet Client. -> Ne fonctionne pas

    La solution 2: Créer un nouveau type d'objet SocketInfo qui contiendra la socket, et ses entrées/sorties. Faire passer cet objet dans le constructeur de l'objet Client et stocker les différentes informations dans l'objet Client. Une fois que le tout est fait, on peut réinitialiser les différentes valeurs dans le thread d'écoute de nouvelles connections au serveur. ->Fonctionne

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/02/2015, 21h52
  2. Réponses: 1
    Dernier message: 28/12/2013, 14h12
  3. Récupérer une injection pour l'utiliser ailleurs
    Par f-k-z dans le forum Langage
    Réponses: 5
    Dernier message: 20/03/2008, 00h15
  4. Réponses: 4
    Dernier message: 03/12/2007, 20h32
  5. [JSTL] Récupérer une variable JSTL pour l'utiliser avec JSP
    Par pitit777 dans le forum Taglibs
    Réponses: 3
    Dernier message: 28/03/2006, 09h47

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