Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2796 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [SOCKET]java.net.SocketException: Connection reset

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SOCKET]java.net.SocketException: Connection reset

n°1133052
gendhal
Posté le 28-06-2005 à 00:04:03  profilanswer
 

Voici mon erreur:

Citation :


java.net.SocketException: Connection reset
 at java.net.SocketInputStream.read(Unknown Source)
 at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)
 at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)
 at sun.nio.cs.StreamDecoder.read(Unknown Source)
 at java.io.InputStreamReader.read(Unknown Source)
 at java.io.BufferedReader.fill(Unknown Source)
 at java.io.BufferedReader.readLine(Unknown Source)
 at java.io.BufferedReader.readLine(Unknown Source)
 at myhttp.GrilleServlet.doGet(GrilleServlet.java:84)
 at myhttp.GrilleServlet.main(GrilleServlet.java:127)


Voici le code de l'applet:

Citation :


/*
 * Created on 21 juin 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.applet.*;
import java.io.*;
import java.net.*;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import grille.*;
import java.awt.*;
/**
 * @author moi
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class GrilleApplet extends Applet implements Runnable{
     
    private int _port;
    private Socket _soc;
    private Socket _soc2;
    private PrintStream _out;
    private BufferedReader _in;
    private PrintStream _out2;
    private BufferedReader _in2;
    private GrilleIHM _grille;
    private boolean _demarre=false;
    private Thread _monThread;
    public void init(){
        System.out.println("entree dans init()" );
        String p=getParameter("port" );
         if(p!=null){
            _port=Integer.parseInt(p);
         }
          try{
              _soc=new Socket("localhost",80);
              _out=new PrintStream(_soc.getOutputStream());
                 _in=new BufferedReader(new InputStreamReader(_soc.getInputStream()));
                 }
                 catch(IOException e){
                     e.printStackTrace();
                 }
         
    }
    public void start(){
        System.out.println("applet demarré" );
        //Exécution du servlet en envoyant la requête
        //_out.print("GET /servlet/GrilleServlet?PORT_SERVEUR="+_port+" HTTP/1.1" );
        //init du nouveau socket
        try{
            _soc2=new Socket("localhost",21);
            _out2=new PrintStream(_soc2.getOutputStream());
            _in2=new BufferedReader(new InputStreamReader(_soc2.getInputStream()));
            }
            catch(IOException e){
                e.printStackTrace();
            }
        //Ecrire sur le socket "GET_TAILLE_GRILLE"
        _out2.print("GET_TAILLE_GRILLE" );
        //Lire le socket "TAILLE_GRILLE <nbX> <nbY>" Si la lecture est autre que TAILLE_GRILLE alors on continue à lire.
        String ligne=null;
        List params;
         
        try{
            ligne=_in.readLine();
                if(ligne.indexOf("TAILLE_GRILLE" )!=-1){
                    //Décodage de nbX et nbY
                    params=new ArrayList();
                    StringTokenizer t=new StringTokenizer(ligne);
                    while(t.hasMoreTokens()){
                        params.add(t.nextToken());
                    }
                }
             
        }
        catch(IOException e){
            e.printStackTrace();
        }
       
        //Creer l'IHM grille et ajout du panel de l'ihm dans l'applet
        //_grille=new GrilleIHM(Integer.parseInt((String)params.get(1)),Integer.parseInt((String)params.get(2)),null);
        //ajout de grilleIHM a l'applet
        _grille=new GrilleIHM(20,20,null);
        add(_grille.getPanel());
        //_grille.afficherGrille();
        //this.show();
        //this.setVisible(true);
        //
        //démarrage du thread
        _monThread=new Thread(this);
        _monThread.start();
        _demarre=true;
        paint(getGraphics());
        this.getGraphics().drawString("fin de start()",1,1);
    }
    public void run(){
        String ligne=null;
        this.getGraphics().drawString("entree dans run",1,1);
        while(_demarre){
         try{
             while((ligne=_in.readLine()).indexOf("DEPLACER" )==-1){
             }
         }
         catch(IOException e){
             
         }
         //Décodage de m, xD, yD, xA, yA
         List params=new ArrayList();
         StringTokenizer t=new StringTokenizer(ligne);
         while(t.hasMoreTokens()){
             params.add(t.nextToken());
         }
         _grille.setMarque(0,Integer.parseInt((String)params.get(2)),Integer.parseInt((String)params.get(3)));
         _grille.setMarque(Integer.parseInt((String)params.get(1)),Integer.parseInt((String)params.get(4)),Integer.parseInt((String)params.get(5)));
        }
    }
     
    public void paint(Graphics g){
        _grille.get_canvas().paint(g);
    }
    public void stop(){
        if (_monThread!=null){
            _demarre=false;
            _out.print("STOP" );
            _monThread=null;
        }
      }
}


Voici le code de ma main:

Citation :


/*
 * Created on 8 juin 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package myhttp;
 
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.util.*;
import grilleod.*;
import grilleservletod.GrilleServletOD;
 
import java.io.*;
import java.net.*;
/**
 * @author moi
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class GrilleServlet extends MyServletAbstract{
     
    private List params;
    private String _hostName="localhost";
    private int _port=9200;
    private String _ident;
    private GrilleServletOD od;
    private ServerSocket _sos;
    private Socket _soc;
    private GrilleODInt _grilleOD;
    private BufferedReader _in;
    private PrintStream _out;
    private boolean run;
    public void init(){
        //creation du socket de communication avec l'applet
        try{
        _sos=new ServerSocket(21);
       
        }
        catch(IOException e){
            e.printStackTrace();
        }
        //params=servletHttp.get_requete().get_listParams();
        //String prt=params.get(0).toString();
       /*
        //creation de l'objet distribue
        try{
        od=new GrilleServletOD(servletHttp);
        Naming.bind("rmi://" + _hostName + ":" + _port + "/" +"GRILLE_SERVLET",od);
        }
        catch(Exception e){
            //Si erreur j'envoie l'exception à l'applet
            servletHttp.get_os().print(e.toString());
            //return;
        }*/
        //lookup sur GrilleOD
  try{
  _grilleOD = (GrilleODInt)(Naming.lookup("rmi://" +
     _hostName + ":" +
     _port + "/GRILLE" ));
   
  }
  catch(Exception e){
      System.out.println("** IMPOSSIBLE de faire le lookup sur le port " +  
        _port + " de GRILLEOD" );
  }
  run=true;
    }
     
    public void doGet(MyHttpServlet servletHttp) {        
         
       init();
  //boucle sur le socket
       String ligne="";
       try{
           while(run){
               
               _soc=_sos.accept();
               _in=new BufferedReader(new InputStreamReader(_soc.getInputStream()));
               _out=new PrintStream(_soc.getOutputStream());
               
           try{ ligne=_in.readLine();}catch(Exception e){e.printStackTrace();}
            if(ligne.indexOf("GET_TAILLE_GRILLE" )!=-1){
                int nbx=0;
                int nby=0;
                try{
                nbx=_grilleOD.getNbX();
             nby=_grilleOD.getNbY();
                }
                catch(RemoteException e){
                    e.printStackTrace();
                }
                _out.print("TAILLE_GRILLE "+nbx+" "+nby);
                _out.flush();
                //_out.close();
            }
            else //si on recoit stop
                if(ligne.indexOf("STOP" )!=-1){
                    try{
                    Naming.unbind("rmi://" + _hostName + ":" + _port + "/" +"GRILLE_SERVLET" );
                    }
                    catch(Exception e){
                        e.printStackTrace();
                    }
                    od=null;
                    run=false;
                }
            }
       
       }
       catch(IOException e){
          e.printStackTrace();
       }
       
         
    }
   
    public void doPost(MyHttpServlet servletHttp) {
        doGet(servletHttp);
 
    }
    public static void main (String[]args){
        GrilleServlet gr=new GrilleServlet();
        MyHttpServlet maS=null;
        gr.doGet(maS);
    }
}


Voila je ne sais pas ce qui cloche alors que jai réaliser un serveur de socket auparavant qui fonctionne sans problemes avec le meme procede.
Merci

mood
Publicité
Posté le 28-06-2005 à 00:04:03  profilanswer
 

n°1133088
the real m​oins moins
Posté le 28-06-2005 à 01:46:15  profilanswer
 

qu'est-ce que c'est que cette servlet que tu instancies dans un main? :heink:
 
 
(et t'es gentil, les patés de code, personne va les lire, surtout si tu n'expliques pas ce que tu tentes de faire *avant* de balancer la purée, et si tu ne tentes pas d'isoler le problème)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1133093
gendhal
Posté le 28-06-2005 à 02:56:18  profilanswer
 

Bon alors le main c'est ce qu'on appelle une methode de test qui me permet de tester mes objets avant de les faire tourner dans mon appli, ca evite bien des recherches.
Ensuite pour l'explication c vrai j'ai ete un peu leger desole.  
Alors le but du jeu c'est de faire communiquer mon applet avec une servlet qui fait office dans ce cas la de serveur de socket. J'ai donc bien sur tente d'isoler le probleme et il apparait sur l'exception que la connection ne se fait pas, j'ai tente de changer le port mais rien y fait alors c'est surement un truc tout con mais je le vois pas ou j'ai pas bien pige le fonctionnement d'un socket.
Ne vous preoccupez pas du code concernant le RMI il n'a pas d'incidence dans ce cas.
voila merci pour vos reponses et n'hesitez pas a me jetter si je suis pas clair, faites moi mal !!^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [SOCKET]java.net.SocketException: Connection reset

 

Sujets relatifs
[java] Besoin de sortir des graphs sur page web connection a une base de donnée Acess Par VBS
API / Classes ASN.1 Java ???JAVA alerte email
site sur le xml en java[resolu] connection database via php et ftp sur free
Java / Tomcat / ContextSSL avec Tomcat et java
J'ai un petit problème avec JavaEclipse : code Java non reconnu
Plus de sujets relatifs à : [SOCKET]java.net.SocketException: Connection reset


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR