CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Problème d'en tete

march99
march99
Niveau 10
23 février 2009 à 16:50:49

public class Recepteur extends ServerSocket {
private Socket client;

public Recepteur(int port) throws IOException {
super(port);
client=null;
}
public void start(){
try {
client = this.accept();
InputStream is =client.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
boolean test=true;
PrintWriter gg = new PrintWriter(client.getOutputStream());
String ligne;
while ((ligne=br.readLine()) != null){
if (test){
gg.println("HTTP/1.1 200");
gg.println("Content-type : text/html");
String html = "<html>coucou</html>";
gg.println("Content-lenght : " + html.length());
gg.println(html);
gg.println();
gg.println();
gg.flush();
test=false;
}
System.out.println(ligne);
}
} catch (IOException e) {
}
}

public static void main(String[] args) throws IOException{
Recepteur coucou = new Recepteur(8080);
coucou.start();
}

}

    • ********************************

*

    • *******************************

Bonjour , Voila mon programme est sencé créer un serveur auquel peut accéder un naviguateur internet(client donc) mais le problème est que je n'arrive pas à envoyer les données au client :(
Il se connecte , le serveur arrive à recevoir le Header( je crois que ça s'appelle comme ça ) mais le naviguateur n'affiche pas "coucou" mais charge indéfiniment .

Je me demandais alors s'il attendait pas des commandes spécifiques avant d'éxecuter ma requete html ?

godrik
godrik
Niveau 30
23 février 2009 à 16:57:53

Le serveur c'est ce que tu ecris.
le protocole HTTP fonctionne comme cela.
Le client envoye une requete GET
GET <chemin>
et le serveur lui renvoie alors le resultat sous la forme entete plus corps.
Tu peux debugger ton serveur avec telnet. connecte toi sur le port 8080 et regarde ce que le serveur te dit.

march99
march99
Niveau 10
23 février 2009 à 17:46:42

Je viens de le faire et telnet ne dit rien ;( Aucun message

march99
march99
Niveau 10
23 février 2009 à 17:50:50

Ha et pour information j'obtiens ceci sur le serveur quand je me connecte :
GET / HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
Accept:
text/html,application/xhtml+xml,application/xml;q=
0.9,*/*;q=0.8
Accept-Language: fr
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

godrik
godrik
Niveau 30
23 février 2009 à 19:06:49

mmm, ca ressemble a un probleme de buffering. C'est le bordel java pour les IO, tu ne sais jamais ce qu'il faut mettre. Le buffering est toujours obscure. C'est vraiment merdique pour les I/O. J'ai deja eu un probleme comme ca, et je pensais avoir contourne le probleme avec un appel a flush, mais non en fait.

Essaye de rajouter un bufferedwriter ou quelquechose comme ca.

PrintWriter gg = new PrintWriter(new BufferedWriter( client.getOutputStream()));

march99
march99
Niveau 10
23 février 2009 à 20:07:04

Eclipse n'aime pas ta ligne , il dit que le constructeur avec l'OutputStream n'existe pas

march99
march99
Niveau 10
23 février 2009 à 20:16:30

Désolé du double post . Voici la ligne que j'ai rajouté :

BufferedWriter gg =new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));

Mais cela ne marche pas .

godrik
godrik
Niveau 30
23 février 2009 à 22:05:13

mmm, il y a un soucis dans ton protocole HTTP.
il faut une ligne (peut etre deux) entre l'entete et le message.
En passant ce n'est pas lenght mais length
mais bon le probleme n'est pas la si tu n'as pas de sorti dans telnet.

dnob700
dnob700
Niveau 10
23 février 2009 à 22:35:20

j'aurais tendance à dire que "br.readLine()" ne renvoie jamais null, mais est peut-être bloquant quand il n'y a plus de donnée à lire (c'est un comportement assez standard pour une fonction d'entrée je pense).

march99
march99
Niveau 10
01 mars 2009 à 12:41:25

Bonjour ,
Merci pous vos réponses :) Mon code marche maintenant

godrik
godrik
Niveau 30
01 mars 2009 à 16:28:35

peux tu nous donner des details sur pourquoi ca ne marchait pas ?

march99
march99
Niveau 10
07 mars 2009 à 12:14:39

Je peux vous donner le code qui marche :

package Archive;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Recepteur extends ServerSocket {
private Socket client;

public Recepteur(int port) throws IOException {
super(port);
client=null;
}
public void start(){
try {
client = this.accept();
InputStream is =client.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
boolean test=true;
PrintWriter gg = new PrintWriter(client.getOutputStream());
String ligne;
while ((ligne=br.readLine()) != null && !(ligne.equals(""))){
System.out.println(ligne);
}
gg.println("HTTP/1.1 200");
gg.println();
String html = "<html>coucou</html>";
gg.println(html);
gg.flush();
gg.close();
br.close();
this.close();

} catch (IOException e) {
}
}

public static void main(String[] args){
//Modifuer le port ici
Recepteur coucou;
try {
coucou = new Recepteur(8080);
coucou.start();
} catch (IOException e) {
System.out.println("Problème lors du lancement du serveur, le port peut-être déjà utilisé");
}
}

}

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment