Proxy.java - Probleme de stream?

 
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> Java
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Clab
dummy mioche
dummy mioche


Inscrit le: 01 Avr 2005
Messages: 3

MessagePosté le: Ven Avr 01, 2005 9:25 am    Sujet du message: Proxy.java - Probleme de stream? Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
salemio
salemioche
salemioche


Inscrit le: 05 Avr 2002
Messages: 13

MessagePosté le: Ven Avr 01, 2005 11:22 am    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Clab
dummy mioche
dummy mioche


Inscrit le: 01 Avr 2005
Messages: 3

MessagePosté le: Ven Avr 01, 2005 7:36 pm    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Clab
dummy mioche
dummy mioche


Inscrit le: 01 Avr 2005
Messages: 3

MessagePosté le: Sam Avr 02, 2005 4:08 pm    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> Java Toutes les heures sont au format CET (Europe)
Page 1 sur 1

 
Sauter vers:  
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
Affilzen SARL : Mention légale