Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Clab dummy mioche

Inscrit le: 01 Avr 2005 Messages: 3
|
Posté le: Ven Avr 01, 2005 9:25 am Sujet du message: Proxy.java - Probleme de stream? |
|
|
Bonjour tout le monde!
J'ai essayé d'utiliser le code que j'ai trouvé sur ce site du proxy java, mais j'ai un p'tit probleme. En gros, il fonctionne, je vois bien transiter toutes les requetes et les réponses mais j'ai un problème avec les images : elles ne s'affichent pas du tout ou alors avec des énormes carrés.
Quelqu'un qui a essayé le code a deja eu ce probleme? J'ai essayé de le résoudre mais je n'y suis pas arrivé. (C'est qqn du forum qui a ecrit le code?)
Est-ce que c'est un problème de stream?
Si quelqu'un a une idée de réponse, ce serait vraiment sympa!
Merci d'avance
Clab
Voici le code du site:
Citation: | import java.io.*;
import java.net.*;
class OneServeur extends Thread{
private Socket socket, socketToWeb;
private BufferedReader fromBrowser;
private PrintWriter toBrowser;
private PrintWriter toWeb;
private BufferedReader fromWeb;
public OneServeur(Socket s) throws IOException {
socket = s;
fromBrowser = new BufferedReader(
new InputStreamReader (
socket.getInputStream()));
toBrowser = new PrintWriter( new BufferedWriter (
new OutputStreamWriter (
socket.getOutputStream())),true);
start();
}
public void run() {
try {
String str, targetHost="", httpHeader="";
while(true) {
str = fromBrowser.readLine();
httpHeader += str + "\n";
if ( str.startsWith("Host: " ) ) targetHost = str.substring(6);
if ( str.length() == 0 ) break;
}
//socketToWeb = new Socket(InetAddress.getByName(targetHost),80);
socketToWeb = new Socket(
InetAddress.getByName("your.real.proxy.com"),80);
System.out.println(socketToWeb);
fromWeb = new BufferedReader(
new InputStreamReader (
socketToWeb.getInputStream()));
toWeb = new PrintWriter( new BufferedWriter (
new OutputStreamWriter (
socketToWeb.getOutputStream())),true);
System.out.println("-> -> -> -> -> -> -> \n" + httpHeader);
toWeb.println(httpHeader);
boolean echoing = true;
while ( true ) {
str = fromWeb.readLine();
if ( str == null ) break;
if ( str.length() == 0 ) echoing = false;
if( echoing ) System.out.println(str);
toBrowser.println(str);
}
System.out.println("\nclosing ...");
} catch ( IOException e) {
} finally {
try {
socket.close();
} catch ( IOException e ) {}
}
}
}
public class Proxy {
public static final int PORT = 12345;
public static void main(String args[]) throws IOException {
ServerSocket s = new ServerSocket(PORT);
System.out.println("Started " + s);
try {
while ( true ) {
Socket socket = s.accept();
try {
System.out.println( "connection acceptee " +
socket);
new OneServeur(socket);
} catch ( IOException e ) {
socket.close();
}
}
} finally {
s.close();
}
}
} |
|
|
Revenir en haut |
|
 |
salemio salemioche

Inscrit le: 05 Avr 2002 Messages: 13
|
Posté le: Ven Avr 01, 2005 11:22 am Sujet du message: |
|
|
readLine est utilisé pour lire les informations, c'est une méthod pour les string, les caractère \r et \n sont supprimés. cela ne fonctionne donc pas pour les binaires (images, flash, doc, pdf...) |
|
Revenir en haut |
|
 |
Clab dummy mioche

Inscrit le: 01 Avr 2005 Messages: 3
|
Posté le: Ven Avr 01, 2005 7:36 pm Sujet du message: |
|
|
Oui, mais meme en rajoutant un \r et/ou \n après chaque readLine() j'obtiens encore la meme chose.
Tu ne sais pas par quelle méthode je pourrais remplacer readLine? j'imagine que je devrais changer aussi les buffered reader et printwriter... Mais je suis a court d'idee. |
|
Revenir en haut |
|
 |
Clab dummy mioche

Inscrit le: 01 Avr 2005 Messages: 3
|
Posté le: Sam Avr 02, 2005 4:08 pm Sujet du message: |
|
|
Voila j'ai ma réponse!
Il suffit de changer en DataInputStream et DataOutputStream... Et readLine en readByte, et c'est nickel !
Merci
Clab |
|
Revenir en haut |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|