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 :

[sockets] Connection reset


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Par défaut [sockets] Connection reset
    Bonjour,
    Je m'essaie aux sockets en Java. j'ai Créé un serveur qui affiche la chaine envoyée par le client.
    Serveur :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    public class Serveur implements Runnable{
     
    	private ServerSocket sock;
    	private ObjectOutputStream  output;
    	private ObjectInputStream  input;
    	private boolean listening = true;
    	private Socket connection;
    	private String message;
     
    	public Serveur() 
    	{
     
       	 try 
    		{
    			sock = new ServerSocket(47489);
    			System.out.println("> SERVER : Le serveur attend les connections..." );
    		}
    		catch (IOException e){ System.out.println("Erreur ouverture socket"+e.getMessage()); }
    		this.run();
    	}
     
    	 public static void main(String args[])
    	 {
     
    		Serveur serv = new Serveur();		
     
    	 }
     
     
    	public void run() {
     
    		      try 
    		      {
    		    	connection = sock.accept();
    		        System.out.println("Serveur >> socket = "+connection);
     
    		       output=new ObjectOutputStream(connection.getOutputStream());		       
    		       input=new ObjectInputStream(connection.getInputStream());
     
    		        // On répond que la connection est établie.
    		       output.writeObject("SERVER >>> connection successfull" );	
    		       /* LECTURE DU MESSAGE */
    			message = (String)input.readObject();
     
    		        System.out.println("> SERVER : message recu = "+message);
     
    		      }
    Je vous passe les catch.

    Client :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public Client() 
    	{
    		try {
    			sock = new Socket( "localhost",  47489);
    			 System.out.println("SOCKET = " + sock);
    			if (sock==null) System.out.println("Socket à null");
    			else System.out.println("Client >> Socket ouvert");
     
    			in = new ObjectInputStream(sock.getInputStream());
    			out = new ObjectOutputStream(sock.getOutputStream());
    		}
    		catch(IOException ioe) 
    		{ System.out.println("Erreur d'ouverture Socket"); }
     
    	}
     
    	public void envoi(String message) throws IOException
    	{
    		System.out.println("Client >> envoi de "+message);
     
    		out.writeUTF(message) ;
    	}
     
    	 public static void main(String args[])
    	 {
     
    		Client cli = new Client();		
    		try {
     
    			cli.envoi("Salut");
    Et donc à chaque fois, l'exception IOException est levée, avec comme message "Connection reset". J'ai bien cherché mais rien trouvé...
    Pas un problème de firewall ou autre, car avec les BufferedReader ça marche... Help !
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Par défaut
    Il semblerait que ça marche quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     /* LECTURE DU MESSAGE */						
    System.out.println("> SERVER : message recu = "+input.readObject());
    mais pas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		       /* LECTURE DU MESSAGE */
    message = input.readObject();						
    System.out.println("> SERVER : message recu = "+message);
    Est-ce un problème de conversion Object -> String?

  3. #3
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    C'est probable, parce que tu traites les flux sockets en tant que flux d'objets sérialisés. La sérialisation doit respecter un certain format, et si tu envoies ou reçois des objets à la place d'octets issus d'un autre système ça peut coincer.

    Pourquoi utilises-tu des ObjectInput/OutputStream ?

Discussions similaires

  1. ERREUR SOCKET 10054 connection reset by peer
    Par bremer dans le forum Web & réseau
    Réponses: 4
    Dernier message: 06/07/2015, 11h12
  2. [JMeter] Socket Write Error / Connection reset by peer ..
    Par quentinbenyahia dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 28/05/2015, 17h29
  3. Réponses: 5
    Dernier message: 14/03/2013, 14h54
  4. Réponses: 5
    Dernier message: 10/01/2009, 13h44
  5. Réponses: 6
    Dernier message: 04/07/2008, 17h58

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