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

Servlets/JSP Java Discussion :

sockets et servlet


Sujet :

Servlets/JSP Java

  1. #1
    dma
    dma est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut sockets et servlet
    Bonjour, je suis débutant java, mais plein de bonne volonté, j'espère pouvoir trouver de l'aide ou/et des conseils ici. J'explique mon problème :

    je suis en train de réaliser une servlet qui déclenche des sockets pendant son execution. Typiquement : un utilisateur utilise la servlet via son navigateur web, la servlet ouvre une socket vers une autre machine pour recuperer des infos et les traiter, puis ferme la socket et renvoit le resultat final sur le browser de l'utilisateur.
    Le problème est : l'utilisateur se connecte à la servlet, lance le traitement (la servlet ouvre donc la fameuse socket vers une machine), et là, l'utilisateur en a marre, c'est trop long, ferme son navigateur... la servlet est coupée brutalement, et la socket n'a pas été fermée (dans mon implémentation en tout cas). Dans mon cas, ceci est bloquant car l'application avec laquelle ma servlet communique reste bloquée tant que la socket n'est pas fermée. Je ne peut donc plus relancer de traitement.

    Y a-t-il un moyen de fermer la socket en cas de fermeture inopinée de la servlet?

    d'avance merci

    Damien

    (j'envois le code si c'est necessaire)

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Lors de l'arrêt du navigateur, il n'y as pas d'interruption du servlet !

    Place ton code, ce sera plus simple (utilise la balise CODE)
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  3. #3
    dma
    dma est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut mon code
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    import java.io.*;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    public class ServletSocket2 extends HttpServlet{
     
    	// variables d'instance
    	private final String HTML1=
    		"<html>" +
    		"<head>" +
    		"<title>Génération de formulaire</title>"+
    		"</head>" +
    		"<body>" +
    		"<h3>Informations de connexion</h3>"+
    		"<hr>" +
    		"<form method=\"POST\">";
    	private final String HTML2="<input type=\"submit\" value=\"Envoyer\"></form><hr>\n";
    	private final String HTML3="</body>\n</html>";
     
    	// GET
    	public void doGet(HttpServletRequest request,HttpServletResponse response)
    	throws IOException, ServletException{
     
    		// on récupère l'éventuel choix de l'utilisateur
    		String adresse=request.getParameter("adresse");
    		String port=request.getParameter("port");
     
    		// on indique au client le type de document envoyé
    		response.setContentType("text/html");
    		// on envoie le formulaire
    		PrintWriter httpOut=response.getWriter();
    		httpOut.println(HTML1);
    		httpOut.println("adresse : <INPUT type=text size=20 name=adresse><br>");
    		httpOut.println("port : <INPUT type=text size=20 name=port><BR>");
    		httpOut.println(HTML2);
     
    		if ((adresse != "") && (port != "")){
    			try {
    				Socket sk = new Socket(adresse,Integer.valueOf(port).intValue());
    				httpOut.println("Socket ouverte <br>");
    				BufferedReader strin = new BufferedReader(new InputStreamReader(sk.getInputStream()));
    				PrintStream strout = new PrintStream(sk.getOutputStream());
     
    				strout.println("XCYZ4020047$ujava  mon_dam DSOCNX1234567891234567ujava");
    				httpOut.println("--&gt; XCYZ4020047$ujava  mon_dam DSOCNX1234567891234567ujava<br>");
    				int c;
    				int a;
    				httpOut.println("<font color=#009933>&lt;--");
    				for (a=0; a < 67; a++){
    				 c = strin.read();
    				 httpOut.println((char)c);
    				 }
    				httpOut.println("</font><br>");
     
     
    				strin.close();
    				strout.close();
    				sk.close();
    				httpOut.println("Socket fermée<br>");
     
     
    			} catch (UnknownHostException e) {
    				httpOut.println("hote inconnu : "+e.getMessage());
    			} catch (IOException e) {
    				httpOut.println("erreur entree/sortie : "+e.getMessage());
    			}
    		}
     
    		// fin du formulaire
    		httpOut.println(HTML3);
    	}//GET
     
    	// POST
    	public void doPost(HttpServletRequest request,HttpServletResponse response)
    	throws IOException, ServletException{
    		// on renvoie sur GET
    		doGet(request,response);
    	}//POST
    }//classe

Discussions similaires

  1. Cherche Bon bouquin sur les servlets/sockets/applets
    Par Iskendor dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 10/05/2011, 22h18
  2. Servlet et sockets
    Par Dwuom dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 03/05/2010, 10h10
  3. Faire cohabiter une "servlet" avec un serveur socket
    Par dams78 dans le forum Struts 1
    Réponses: 0
    Dernier message: 20/01/2010, 15h29
  4. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  5. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40

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