logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [java] socket & html
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [java] socket & html  (Lu 2373 fois)
the lsd
Administrateur

Profil challenge

Classement : 190/54285

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« le: 12 Février 2008 à 16:35:28 »

Me revoila avec mon jva \o/

On change totalement de sujet, plus d'image, de couleurs...

Maintenant j'ai un souci de socket qui me parait pour ,le poins très étrange !

En fait, j'ouvre ma connexion socket sur le port 80, j'envoie les données au serveur, et je recois les données. C'est la que la bas blesse !
Après une paire de test sur différents serveurs et pages, on dirait que la reception des données ne se fait pas tout le temps.
Je m'explique : si la page est trop petite (pas assez de caractère/lignes on dirait), ma socket ne recoit qu'une réponse 200 du serveur et rien d'autre, alors que sur des grandes pages, je recois toutes les données html...
Je vois d'où peut venir le probleme !
Voila le code du socket et de la reception des données (les objets sont instanciés plus haut dans le code)

Code:
	public void connexion()
{
try
{
sock = new Socket (url, 80) ;
envoyer = sock.getOutputStream () ;
envoi = new BufferedWriter (new OutputStreamWriter (envoyer)) ;
envoi.write ("GET /notes.php HTTP/1.1") ;
envoi.newLine() ;
envoi.write ("Host: "+url) ;
envoi.newLine() ;
envoi.write ("User-Agent: The lsd Bot") ;
envoi.newLine() ;
envoi.write ("Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5") ;
envoi.newLine() ;
envoi.write ("Accept-Language: en-us,en;q=0.5") ;
envoi.newLine() ;
envoi.write ("Accept-Encoding: gzip,deflate") ;
envoi.newLine() ;
envoi.write ("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7") ;
envoi.newLine() ;
envoi.write ("Keep-Alive: 300") ;
envoi.newLine() ;
envoi.write ("Connection: keep-alive") ;
envoi.newLine() ;
envoi.newLine() ;
envoi.flush() ;
}
catch (Exception e)
{
System.out.println (e) ;
}


}

public void recevoir ()
{
try
{
reception = sock.getInputStream () ;
recoit = new BufferedReader (new InputStreamReader (reception)) ;
while (reception.read() != -1)
{
String ligne = recoit.readLine() ;
System.out.println (ligne) ;

}
}
catch (Exception e)
{
System.out.println (e) ;
}
}

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
_o_
Relecteur

Profil challenge

Classement : 42/54285

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #1 le: 12 Février 2008 à 19:05:03 »

Code:
		while (reception.read() != -1)
{
String ligne = recoit.readLine() ;
}

T'as pas l'impression de mélanger les choux et les carottes, là, par hasard ? Tu lis un caractère du flux entrant, puis une ligne complète par l'interface tampon, et ça en boucle. Je ne sais pas si c'est la cause de tes problèmes, mais il y a définitivement quelque chose qui cloche là-dedans.

Et comme d'habitude, la réponse est dans... google. Par exemple, cherchons quelle est la bonne méthode de cohabitation entre InputStream et BufferedReader en cherchant ces deux noms de classes. Que nous donne le deuxième lien ?
http://recursor.blogspot.com/2006/09/bufferedreader-vs-inputstream.html

Et paf.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
the lsd
Administrateur

Profil challenge

Classement : 190/54285

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #2 le: 13 Février 2008 à 00:40:37 »

Effectivement, vu sous cet angle, ca peut paraitre étrange !
Mais cela explique donc bien des choses !
Donc, le probleme est résolu !!!

Pour le benchmark, c'est un article ma foi intérressant !
merci du coup de main _o_

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Pages: [1]
  Imprimer  
 
Aller à: