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

Développement Web en Java Discussion :

ServerSocket, socket cliente et acces par navigateur


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 44
    Par défaut ServerSocket, socket cliente et acces par navigateur
    Bonjour à tous,
    J'ai créé une application qui se comporte comme un serveur, avec la classe ServerSocket, ...
    Mon serveur écoute donc le port 8088 et renvoi une page html lorsqu'un client se connecte.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     out.println("HTTP/1.1 200");
     
               out.println("Content-type : text/html");
     
              String html = "<html><head><title>Test Reponse" +
    "</title></head><body>ceci est un test</body></html>";
     
              out.println("Content-lenght : " + html.length());
     
              out.println(html);
    Depuis un autre programme, je fais un socket sur ce serveur et sur ce port; la page html m'est bien renvoyée.
    Par contre, lorsque que dans mon vavigateur, je tape :
    Ca ne m'envoi pas d'erreur mais la page reste blanche ...
    Quelqu'un aurait une idée pourquoi j'ai cette page blanche au lieu de ma page html que je veux afficher ?
    Le navigateur et le socket ne réagisse pas pareil normalement ?

    J'aimetrai aussi avoir une confirmation sur ce que je pense ...

    --> out.flush(); // force l'écriture?

    --> out.close(); // ferme l'ecriture?

    --> client.close(); // ferme la connection ?

  2. #2
    Membre émérite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    Dans ton navigateur,
    Une fois la page blanche affichée, si tu fais "afficher la source", tu obtiens quoi ?

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 44
    Par défaut
    Il n'y a rien dans le code source.
    j'y avais deja pensé ^^

    voilà 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
    try {
     
                    client = sock.accept();
     
                    BufferedReader in = new BufferedReader(new InputStreamReader(
     
                            client.getInputStream()));
     
                    PrintWriter out = new PrintWriter(client.getOutputStream());
     
                    System.out.println(client.getInetAddress());
     
                    out.println("HTTP/1.1 200");
     
                    out.println("Content-type : text/html");
     
                    String html = "<html><head><title>Test Reponse" +
     
                            "</title></head><body>ceci est un test</body></html>";
     
                    out.println("Content-lenght : " + html.length());
     
                    out.println(html);
     
     
     
     
     
                    out.flush();
     
                   out.close();
     
                    client.close();
     
     
     
                } catch (IOException e) {
     
                    System.out.println("Impossible de se connecter au client");
     
                    System.exit(1);
     
                }

    J'ai l'impression que la page n'a pas le temps de s'afficher car la connection est coupée trop vite; es possible ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il doit surement y avoir des erreurs dans le respect du protocole HTTP. Il me semble qu'il y a une ligne vide entre les headers HTTP et le contenu du fichier...


    A mon avis le protocole HTTP est quand même un gros morceau. Pourquoi ne pas utiliser une application J2EE et le moteur HTTP du serveur d'application ?

    Sinon si tu veux ajouter un serveur HTTP dans une application desktop je te conseillerais plutôt d'utiliser le composant HttpCore de Jakarta...


    a++

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 44
    Par défaut
    Je vais chercher pour le protocole HTTP s'il en faut plus que ca mais ce code je l'ai pri d'un livre sur le java ...

    Si je ne trouve pas je me renseignerai sur les applications mais j'aimerai le faire moi meme si c'est possible !!

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    utilise un proxy local pour ton navigateur, comme par exemple proxomitron. Il n'est plus maintenu depuis longtemps, mais suffisant pour ce que tu vas en faire. Il te permet de voir tous les entêtes des requêtes en emmission/reception, ainsi que les variables en post. Tu pourras voir ou ça bloque. Pour la fermeture des flux, n'hésite pas à mettre une pause de quelques secondes pour les tests. Lorsque j'ai codé mon serveur HTTP, j'avais eu aussi quelques soucis avec les temps de pause : en mode débug pas à pas ça marchait mais en mode normal ça plantait parfois...
    N'hésite pas aussi à jeter un coup d'oeil sur les RFC HTTP pour être certain de n'oublier aucun entête obligatoire
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert de fichier par socket client vers client
    Par Dasson dans le forum Entrée/Sortie
    Réponses: 21
    Dernier message: 17/04/2012, 02h26
  2. [2008] Gérer les accès par client
    Par pierick dans le forum SSAS
    Réponses: 4
    Dernier message: 05/07/2011, 14h21
  3. problémes accé à glassfish par navigateur
    Par flybest dans le forum Glassfish et Payara
    Réponses: 2
    Dernier message: 17/01/2010, 10h53
  4. [ODBC] Accès à BDD Access par navigateur Web.
    Par Gaelle_974 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/06/2007, 12h41
  5. Accès impossible à un site par navigateur
    Par lodan dans le forum Administration
    Réponses: 7
    Dernier message: 23/01/2007, 18h43

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