[JAVA] petite Problème avec les sockets

Résolu
Bonjour a tous,

j'ai écrit deux processus client / serveur :
le client envoie un message vers le serveur et le serveur aussi , mais le problème c'est que je ne reçois pas les message envoyer par les deux (je crois c'est un blocage ) je vous laisse avec mon code et merci de me signaler l'erreur :) :

client.java :

package javaapplication15;  
import java.net.*;  
import java.io.IOException;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  
import java.io.BufferedWriter;  
import java.io.PrintWriter;  
/**  
 *  
 * @author marwen  
 */  
public class client {  

    public client() {  
    }  
    public static void main(String args[]) throws IOException{  
    System.out.println("en attendant la réponse du serveur...");  
    Socket socketduclient =new Socket("localhost",2011);  
    System.out.println("connexion établie avec le serveur ");  
      
    BufferedReader input=new BufferedReader(new InputStreamReader(socketduclient.getInputStream()));  
    PrintWriter output=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socketduclient.getOutputStream())));  
      
  output.print("ceci est un message viens de moi (le client)");  
   output.flush();  
     
    String f=input.readLine();  
    System.out.println(f);  
      
      
    /*fermeture des fluxs*/  
    socketduclient.close();  
    input.close();  
    output.close();  
    }  
      
}  


serveur.java
package javaapplication15;  
import java.io.IOException;  
import java.net.*;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  
import java.io.BufferedWriter;  
import java.io.PrintWriter;  



/**  
 *  
 * @author marwen  
 */  
public class serveur {  
      
public serveur(){  
}  

public static void main(String args[]) throws IOException{  
ServerSocket socketduserveur =new ServerSocket(2011);  
System.out.println("serveur démarré en attandant un client.....");  
Socket socketclient=socketduserveur.accept();  

BufferedReader input=new BufferedReader(new InputStreamReader(socketclient.getInputStream()));  
PrintWriter output=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socketclient.getOutputStream())));  

String line=input.readLine();  
System.out.println(line);  

output.print("réponse serveur heuuu !");  
output.flush();  


/*fermeture des fluxs */  
socketclient.close();  
socketduserveur.close();  
input.close();  
output.close();    
}  
      
}  


merci encore .



To Be Or Not To Be , Marwen

2 réponses

  1. Modérateur
    Rajoute un \n à la fin de output.print pour que cela coïncide avec le input.readLine();
    1. Merci beaucoup KX !

      Je viens de perdre quelques heures à chercher pourquoi... Grâce à toi j'ai l'explication. Merci!
  2. Bonsoir KX,
    ça marche merci , on peut aussi utiliser output.println()
    au lieu de print(\n)..
    bah je ne comprend pas pourquoi print("blala") ça marche pas peu-tu m'explique le problème ?
    merci encore :)
    1. Modérateur
      Tu le mets où ton print("blala") ?
      Comme je l'ai dit si tu utilises readLine en parallèle il faut rajouter le caractère de fin de ligne, pour matcher le pattern, donc print("blala\n") ou println("blala") si tu préfères.
    2. bonsoir,
      oui je comprend c'est claire , j'ai posé la question a mon prof, et j'ai eu la même réponse
      merci