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

  FORUM HardWare.fr
  Programmation
  Java

  HTTP server - PrintWriter BufferedReader

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

HTTP server - PrintWriter BufferedReader

n°1032159
Clabecq
Posté le 01-04-2005 à 10:10:21  profilanswer
 

Salut tout le monde!
 
J'écris un petit serveur http qui prend les requêtes à partir du browser et qui les transmet sur internet. Ensuite, le serveur prend la réponse d'internet et la transfère au browser. (Le but du programme est de modifier le code html reçu avant de le donner au browser mais ce n'est pas encore développé....)
 
En gros, le serveur fonctionne... Mais j'ai des problèmes avec les images: elles sont toutes formées de gros carrés quand elles veulent bien apparaitre. Si vous essayez le code, vous vous en rendrez compte tout de suite. Vous devez juste modifier les parametres de connexion d'internet explorer: proxy server 127.0.0.1 et port 12345 et bien sûr lancer le code java...
 
En fait, j'ai l'impression que les données que je recois sont modifiées quand je les transmet au browser, pourtant je ne modifie pas les streams. Est-ce que j'utilise mal les streams? Est-ce que je rajoute des \r\n au mauvais endroit? Ca fait un bon moment que je cherche et je ne parviens pas à résoudre le problème!
 
 
Si quelqu'un a une idée, je suis preneur!
Merci d'avance
Clabecq
 
 

Citation :

import java.io.*;
import java.net.*;
 
class test {
 
 private static Socket socket, socketToWeb;
 private static BufferedReader fromBrowser, fromWeb;
 private static PrintWriter toBrowser, toWeb;
 public static int port = 12345;
 private static ServerSocket s;
 public static void main(String[] args) throws IOException {
 
  s = new ServerSocket(port);
 
  while (true) {
 
   try {
 
    socket = s.accept();
 
    //ouverture des flux entrants et sortants du socket
    fromBrowser = new BufferedReader(new InputStreamReader(socket
      .getInputStream()));
    toBrowser = new PrintWriter(new BufferedWriter(
      new OutputStreamWriter(socket.getOutputStream())), true);
 
    String str, targetHost = "", httpHeader = "";
    while (true) {
     
     str = fromBrowser.readLine();
     httpHeader += str + "\r\n";
     if (str.startsWith("Host: " )) // On recupere l'host pour savoir ou le socket doit se connecter.
      targetHost = str.substring(6);
     if (str.length() == 0)
      break;
    }
 
    socketToWeb = new Socket(InetAddress.getByName(targetHost), 80);// connexion d'un nouveau socket au site web
    System.out.println("HOST: " + targetHost);
     
     
    // ouverture des flux entrants et sortants du socket connecte au site web.
    fromWeb = new BufferedReader(new InputStreamReader(socketToWeb
      .getInputStream()));
    toWeb = new PrintWriter(new BufferedWriter(
      new OutputStreamWriter(socketToWeb.getOutputStream())),
      true);
 
    toWeb.println(httpHeader); // envoi de la requete au site web
 
    String answer = "";
 
    while (true) {
     str = fromWeb.readLine();
     if (str == null)
      break;
     answer += (str + "\r\n" );
     // reception de la reponse du site web.
    }
 
    toBrowser.println(answer); // envoi des données recues au browser.
    socket.close();
    socketToWeb.close();
   } catch (Exception e) {
   }
  }
 }
}
 

mood
Publicité
Posté le 01-04-2005 à 10:10:21  profilanswer
 

n°1032266
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-04-2005 à 11:44:50  profilanswer
 

Bin les Writers et les Readers, c'est fait pour lire des char, pas des bytes. Donc si t'essaies de passer des données de type binaire via ce genre de tuyau, y a des chances pour qu'il y ait des casts à la con dans un coin qui foutent la grouille [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1032298
the real m​oins moins
Posté le 01-04-2005 à 12:07:37  profilanswer
 

Taiche a écrit :

Bin les Writers et les Readers, c'est fait pour lire des char, pas des bytes. Donc si t'essaies de passer des données de type binaire via ce genre de tuyau, y a des chances pour qu'il y ait des casts à la con dans un coin qui foutent la grouille [:spamafote]


encodages/decodages :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1032305
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-04-2005 à 12:12:52  profilanswer
 


Bin j'pensais surtout au passage byte -> char qui est pas forcément recommandé dans le cadre des images et autres fichiers binaires. Maintenant, je sais pas trop comment fonctionnent les Writers/Readers, donc je m'avance pas trop dans l'hypothèse :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1032313
the real m​oins moins
Posté le 01-04-2005 à 12:22:07  profilanswer
 

ben ils font plus que du cast de byte en char quoi [:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1032317
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-04-2005 à 12:24:13  profilanswer
 

Oui non mais d'accord, mais y a pas de méthode de PrintWriter qui prenne de byte en entrée, non ? Bon bin dans ce cas, comment tu passes une image dans ton PrintWriter ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1032325
sebi
Posté le 01-04-2005 à 12:32:58  profilanswer
 

ce que je comprends pas, ca devrait recuperer le tag <img ...> non ? pas le binaire ...

n°1032327
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-04-2005 à 12:34:41  profilanswer
 

Bin en tombant sur un tag <img> le browser client va faire la requête sur l'image et le serveur HTTP devra lui renvoyer. Je pense que c'est à ce moment que ça chie, pas pour la récup du code HTML.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1032794
Clabecq
Posté le 01-04-2005 à 20:34:40  profilanswer
 

Merci pour toutes vos réponses!
 
J'imaginais bien que l'erreur devait venir d'un cast foireux quelque part...  
 
Et quel serait le type de données le plus intéressant à utiliser à la place des Reader et des writers alors? Un type qui fonctionne avec les bytes...
 

n°1032847
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-04-2005 à 21:44:47  profilanswer
 

Bin DataOutputStream, par exemple [:spamafote]

mood
Publicité
Posté le 01-04-2005 à 21:44:47  profilanswer
 

n°1032877
benou
Posté le 01-04-2005 à 22:52:41  profilanswer
 

Taiche a écrit :

Bin DataOutputStream, par exemple [:spamafote]


outputstream tout court pour du binaire [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°1033159
Clabecq
Posté le 02-04-2005 à 16:49:59  profilanswer
 

Ho mais ouip! Mais ca marche!
 
Il suffit de remplacer par des DataInputStream et des DataOutpuStream...on change readLine en readByte et c'est nickel!
 
Merci beaucoup à tous pour votre aide!
 
Clabecq


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

  HTTP server - PrintWriter BufferedReader

 

Sujets relatifs
Server Erroruploader des fichiers lourds via http/ftp?
[tomcat 5] [SQL Server] connection à la base de donnéesgenerateur http de fils rss
ajouter contact MSN par lien HTTP[SQL Server] mise a jour connection FTP
[WSAD et SQL server et JDBC] Je vois pas mes tables[JAVA] Limite du BufferedReader ?
Quel type transfert choisir SSH FTP HTTP ??Connection à SQL server
Plus de sujets relatifs à : HTTP server - PrintWriter BufferedReader


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