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] Attente de la réponse trop longue


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut [socket] Attente de la réponse trop longue
    Bonjour,

    J'ai établi un connexion avec des sockets pour réaliser des requetes Http. Lorsque j'envoie ma requete et que je récupere ma réponse celle ci est correcte, mais le readLine() reste bloqué pendant une durée de 20 seconde.

    Voici comment je réalise 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
    19
    20
    21
    Socket socket = new Socket(ip, port);
     
    		OutputStream out = socket.getOutputStream();
     
     
    		BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     
    		out.write(uploadHeader.getBuffer(), 0, uploadHeader.getBuffer().length);
    		out.flush();
    		out.write(uploadCorps.getBuffer(), 0, uploadCorps.getBuffer().length);
    		out.flush();
     
    		String line;
    		while ((line = rd.readLine()) != null) {
    			System.out.println("line :" + line);
    		}
     
    		System.out.println("END"); // message de terminaison
    		socket.close();
    		out.close();
    		rd.close();
    Est ce que quelqu'un peut me dire pourquoi je reste bloqué pendant 20 secondes?
    Merci d'avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut
    salut;
    tu peux nous poster tout le code, comme ca on peut t'aider.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Je pense que mon problème vient de ma connexion avec un serveur distant. Celui ci doit garder sa connexion keepalive. J'ai essayé de faire un
    sur ma socket
    Mais ça n'a eu aucune incidence.

    skylaner
    salut;
    tu peux nous poster tout le code, comme ca on peut t'aider.
    Je vois pas pourquoi tu veux le reste du code. Il consiste seulement en la création d'un message créé directement en byte.

    Le message est correcte car quand je l'envoie en utilisant la classe URL, tout marche très bien.

    Ma solution serait donc de récupéré la réponse, et en fonction de celle ci, sortir de ma boucle while. L’inconvénient est que ma socket restera active pendant 20 secondes

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    J'ai résolu mon problème. Il m'a fallu utiliser la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Socket.setSo_Linger(true, 0)
    . Cette méthode (avec les paramètres true et 0) permet d'arrêter la connection à l'appelle de la méthode . Le port ne se met pas dans l'état "WAIT", il est directement déconnecté.

Discussions similaires

  1. [BO 6.5.1] Temps de réponse trop longue
    Par denisys dans le forum Débuter
    Réponses: 2
    Dernier message: 29/07/2009, 08h39
  2. [socket] attente de réponse
    Par vasilov dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 19/08/2005, 12h20
  3. Erreur ORA-01704 : constante de chaine trop longue
    Par verrec_s dans le forum Oracle
    Réponses: 22
    Dernier message: 13/12/2004, 15h30
  4. [TP]Probleme de ligne trop longue
    Par poppels dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 24/09/2004, 06h36
  5. chaine trop longue pour envoyer en socket?
    Par jeje.r dans le forum C++Builder
    Réponses: 10
    Dernier message: 27/06/2003, 16h36

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