A voir également:
- [java] probleme quand je fais des methodes
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Jeux java itel 5360 ✓ - Forum Mobile
- Java jre - Télécharger - Langages
5 réponses
Utilisateur anonyme
2 mai 2005 à 14:17
2 mai 2005 à 14:17
salut
tu devrais mettre des bouts de code stp.
peut-etre que tu passes des mauvais parametres, ou que tu ne retournes pas la bonne valeur?
tu devrais mettre des bouts de code stp.
peut-etre que tu passes des mauvais parametres, ou que tu ne retournes pas la bonne valeur?
ok, avant j'avais ça :
Après j'ai transformé comme ça :
class Clients extends Thread { private Socket client; private Statement stmt; private int numero; private InputStream sin; private OutputStream sout; public static int port = 80; private static String query; public Clients(Socket client, Statement stmt, int numero){ try{ this.client = client; this.stmt = stmt; this.numero = numero; start(); } catch (Exception e){System.err.println(e);} } // !constructeur public void run(){ try{ sin = client.getInputStream(); BufferedReader from_client = new BufferedReader(new InputStreamReader(sin)); sout = client.getOutputStream(); Socket socket = new Socket(); String tmp; boolean fini = false; int position; int cle = 0; String url = ""; String requete = ""; String user_agent = ""; String host_client = ""; String referer = ""; /*********************************************/ /* PARTIE TRAITEMENT DE LA REQUETE DU CLIENT */ /*********************************************/ // Lecture de la requete du client while (((tmp = from_client.readLine()) != null) && !fini){ System.out.println(tmp); String regex0 = "^(GET|POST) +(http[^ ]+) +HTTP/(.\\..)$"; Pattern p0 = Pattern.compile(regex0); Matcher m0 = p0.matcher(tmp); while (m0.find()){ for (int i=0; i <= m0.groupCount(); i++){ System.out.println("Groupe " + i + " : " + m0.group(i)); } // On récupère la dernière valeur ID ajoutée dans la base int cle_avant = 0; query = "SELECT MAX(ID) FROM traces_clients"; ResultSet result = stmt.executeQuery(query); while ( result.next() ) { cle_avant = result.getInt(1); } cle = cle_avant + 1; query = "INSERT INTO traces_clients(ID,chaine_entiere,methode,URL,norme_HTTP) VALUES ('" + cle + "', '" + m0.group(0) + "', '" + m0.group(1) + "', '" + m0.group(2) + "', '" + m0.group(3) + "')"; stmt.executeUpdate(query); } if (tmp.trim().toUpperCase().startsWith("GET")) { position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length(); url = tmp.trim().substring(11,position-2).trim(); requete = tmp; } else if (tmp.trim().toUpperCase().startsWith("HEAD") || tmp.trim().toUpperCase().startsWith("POST")) { position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length(); url = tmp.trim().substring(12,position-2).trim(); requete = tmp; } // il faut recuperer le User-Agent, le Host et le Referer String regex = "^User-Agent: +(.*\\))$"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(tmp); while (m.find()){ user_agent = m.group(0); query = "UPDATE traces_clients SET User_Agent = '" + m.group(1) + "' WHERE ID = " + cle; stmt.executeUpdate(query); } String regex2 = "^Host: +(.*)"; Pattern p2 = Pattern.compile(regex2); Matcher m2 = p2.matcher(tmp); while (m2.find()){ host_client = m2.group(1); } String regex3 = "^Referer: +(.*)"; Pattern p3 = Pattern.compile(regex3); Matcher m3 = p3.matcher(tmp); while (m3.find()){ referer = m3.group(1); } // On arrete de lire quand il n'y a plus rien à lire String regex4 = "^[a-zA-Z]"; Pattern p4 = Pattern.compile(regex4); Matcher m4 = p4.matcher(tmp); if (!m4.find()) { fini = true; System.out.println("fini " + fini); break; } } System.out.println("Url demandée : " + url + "\n"); /***********************************/ /* PARTIE CONNEXION AU SERVEUR WEB */ /***********************************/ // Creation de la socket entre le proxy et le serveur Web if (host_client != "") { socket = new Socket(InetAddress.getByName(host_client),port); System.out.println("socket créé"); } else if (referer != ""){ socket = new Socket(InetAddress.getByName(referer),port); System.out.println("socket créé"); } else { socket = new Socket(InetAddress.getByName(url),port); System.out.println("socket créé"); } PrintStream sortant = new PrintStream(socket.getOutputStream()); // On envoie au serveur Web la requete du client if (host_client != "") { System.out.println(requete + user_agent + "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); sortant.println(requete + user_agent+ "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); } else { System.out.println(requete + "\r\n" + user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); sortant.println(requete + user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); } /**************************************/ // Lecture de la réponse du serveur Web /**************************************/ PrintStream sout = new PrintStream(client.getOutputStream()); System.out.println("sout"); InputStream entrant = socket.getInputStream(); System.out.println("entrant"); System.out.println("Lecture de la réponse du serveur ..."); byte [] buffer = new byte[4096]; int lus; String ligne = ""; // on lit byte par byte la réponse du serveur Web et on l'envoie au client while ((lus = entrant.read(buffer)) != -1) { sout.write(buffer,0,lus); } sout.close(); socket.close(); System.out.println("socket.close();"); client.close(); } catch (Exception e){System.err.println(e);} } // ! run() method } // ! Clients class
Après j'ai transformé comme ça :
class Clients extends Thread { private Socket client; private static Statement stmt; private int numero; private InputStream sin; private OutputStream sout; public static int port = 80; private static String query; private static int cle; private static String url = ""; private static String requete = ""; private static String user_agent = ""; private static String host_client = ""; private static String referer = ""; public Clients(Socket client, Statement stmt, int numero){ try{ this.client = client; this.stmt = stmt; this.numero = numero; start(); } catch (Exception e){System.err.println(e);} } // !constructeur public void run(){ try{ // sout = client.getOutputStream(); Socket socket = new Socket(); String tmp; /*********************************************/ /* PARTIE TRAITEMENT DE LA REQUETE DU CLIENT */ /*********************************************/ System.out.println("appel lire_requete_client(client)" + client); lire_requete_client(client); System.out.println("retour lire_requete_client(client)" + client); /***********************************/ /* PARTIE CONNEXION AU SERVEUR WEB */ /***********************************/ System.out.println("connexion serveur web"); // Creation de la socket entre le proxy et le serveur Web if (host_client != "") { socket = new Socket(InetAddress.getByName(host_client),port); System.out.println("socket créé"); } else if (referer != ""){ socket = new Socket(InetAddress.getByName(referer),port); System.out.println("socket créé"); } else { System.out.println("avant"); socket = new Socket(InetAddress.getByName(url),port); System.out.println("socket créé"); } PrintStream sortant = new PrintStream(socket.getOutputStream()); // On envoie au serveur Web la requete du client if (host_client != "") { System.out.println(requete + user_agent + "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); sortant.println(requete +"\r\n"+ user_agent+ "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); } else { System.out.println(requete + "\r\n" + user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); sortant.println(requete + "\r\n"+user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n"); } /**************************************/ // Lecture de la réponse du serveur Web /**************************************/ PrintStream sout = new PrintStream(client.getOutputStream()); System.out.println("sout"); InputStream entrant = socket.getInputStream(); System.out.println("entrant"); System.out.println("Lecture de la réponse du serveur ..."); byte [] buffer = new byte[4096]; int lus; String ligne = ""; // on lit byte par byte la réponse du serveur Web et on l'envoie au client //BufferedReader bin = new BufferedReader(new InputStreamReader(entrant)); while ((lus = entrant.read(buffer)) != -1) { sout.write(buffer,0,lus); } sout.close(); socket.close(); System.out.println("socket.close();"); client.close(); System.out.println("client.close"); } catch (Exception e){System.err.println(e);} } // ! run() method private static void lire_requete_client(Socket client){ String tmp; boolean fini = false; int position; try { InputStream sin = client.getInputStream(); BufferedReader from_client = new BufferedReader(new InputStreamReader(sin)); while (((tmp = from_client.readLine()) != null) && !fini){ System.out.println(tmp); String regex0 = "^(GET|POST) +(http[^ ]+) +HTTP/(.\\..)$"; Pattern p0 = Pattern.compile(regex0); Matcher m0 = p0.matcher(tmp); while (m0.find()){ for (int i=0; i <= m0.groupCount(); i++){ System.out.println("Groupe " + i + " : " + m0.group(i)); } // On récupère la dernière valeur ID ajoutée dans la base int cle_avant = 0; query = "SELECT MAX(ID) FROM traces_clients"; ResultSet result = stmt.executeQuery(query); while ( result.next() ) { cle_avant = result.getInt(1); } cle = cle_avant + 1; query = "INSERT INTO traces_clients(ID,chaine_entiere,methode,URL,norme_HTTP) VALUES ('" + cle + "', '" + m0.group(0) + "', '" + m0.group(1) + "', '" + m0.group(2) + "', '" + m0.group(3) + "')"; stmt.executeUpdate(query); } if (tmp.trim().toUpperCase().startsWith("GET")) { position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length(); url = tmp.trim().substring(11,position-2).trim(); requete = tmp; } else if (tmp.trim().toUpperCase().startsWith("HEAD") || tmp.trim().toUpperCase().startsWith("POST")) { position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length(); url = tmp.trim().substring(12,position-2).trim(); requete = tmp; } // il faut recuperer le User-Agent, le Host et le Referer String regex = "^User-Agent: +(.*\\))$"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(tmp); while (m.find()){ user_agent = m.group(0); query = "UPDATE traces_clients SET User_Agent = '" + m.group(1) + "' WHERE ID = " + cle; stmt.executeUpdate(query); } String regex2 = "^Host: +(.*)"; Pattern p2 = Pattern.compile(regex2); Matcher m2 = p2.matcher(tmp); while (m2.find()){ host_client = m2.group(1); } String regex3 = "^Referer: +(.*)"; Pattern p3 = Pattern.compile(regex3); Matcher m3 = p3.matcher(tmp); while (m3.find()){ referer = m3.group(1); } // On arrete de lire quand il n'y a plus rien à lire String regex4 = "^[a-zA-Z]"; Pattern p4 = Pattern.compile(regex4); Matcher m4 = p4.matcher(tmp); if (!m4.find()) { fini = true; System.out.println("fini " + fini); break; } } System.out.println("Url demandée : " + url + "\n"); } catch (Exception e){System.err.println(e);} } // ! lire_requete_client() } // ! Clients class
Utilisateur anonyme
2 mai 2005 à 14:40
2 mai 2005 à 14:40
arf... c'est un peu lourd maintenant ...desolé.
surtout quand on connait pas le code, c'est super difficile à déchiffer, et sur une page web en plus.
Il faudrait que tu mettes juste ce qui nous intéresse:
-fonctions appelees
-déclarations
-entete des fonctions
-enf ait juste ce qu'il y a d'important !
surtout quand on connait pas le code, c'est super difficile à déchiffer, et sur une page web en plus.
Il faudrait que tu mettes juste ce qui nous intéresse:
-fonctions appelees
-déclarations
-entete des fonctions
-enf ait juste ce qu'il y a d'important !
Utilisateur anonyme
2 mai 2005 à 14:42
2 mai 2005 à 14:42
Il faut que tu sois sure d'avoir bien recopié le code dans tes fonctions et que les variables sont bien déclarées (tout en haut si tu en a besoin dans plusieurs fonctions)
;-)
;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question