|
|
|
|
Bonjour,
J'ai un petit souci avec mon code :
$server_name = "server1.freeserv.fr";
$server_port = "34000";
$fp = fsockopen("udp://".gethostbyname($server_name), $server_port, $errno, $errstr, 30);
if (!$fp) {
echo "Echec de la connection<br />\n";
echo "$errstr ($errno)<br />\n";
} else {
echo "Connection réussie<br />\n";
echo "....Envoi de la requête<br />\n";
echo "...........Valeur retour du fputs : ".fputs($fp, "/xff/xff/xff/xffchallenge rcon\n", 19)."<br />\n";
echo "....Lecture de la réponse<br />\n";
$reponse = fread($fp,4);
echo "...........Valeur retour du fread : ".$reponse."<br />\n";
fclose($fp);
}
Connection réussie ....Envoi de la requête ...........Valeur retour du fputs : 19 ....Lecture de la réponse
Configuration: Windows XP Firefox 3.0.11
Salut ! Merci de m'accorder un peu de temps pour m'aider...
Voici un exemple de réponse :
retour hexa retour décimal retour string
ff ff ff ff 63 68 61 6c 255 255 255 255 099 104 097 108 ....chal
6c 65 6e 67 65 20 72 63 108 101 110 103 101 032 114 099 lenge rc
6f 6e 20 32 30 37 36 37 111 110 032 050 048 055 054 055 on 20767
37 34 32 31 0a 00 055 052 050 049 010 000 7421..
Analyse :
* Une suite de quatre octets de valeur FF ou 255.
* Une string contenant :
o La chaîne challenge rcon .
o Le challenge, ici 207677421.
o Un caractère de nouvelle ligne.
Donc la réponse se termine avec un retour à la ligne... Pourrais tu m'indiquer que faire de cette information ? Merci |
Voici un exemple de réponse :
retour hexa
ff ff ff ff 63 68 61 6c
6c 65 6e 67 65 20 72 63
6f 6e 20 32 30 37 36 37
37 34 32 31 0a 00
retour décimal
255 255 255 255 099 104 097 108
108 101 110 103 101 032 114 099
111 110 032 050 048 055 054 055
055 052 050 049 010 000
retour string
....chal
lenge rc
on 20767
7421..
Analyse :
* Une suite de quatre octets de valeur FF ou 255.
* Une string contenant :
o La chaîne challenge rcon .
o Le challenge, ici 207677421.
o Un caractère de nouvelle ligne.
désolé pour les petits problèmes de "formatage du premier post" |
$reponse = stream_get_line($fp,1024,'\n');
Connection réussie
....Envoi de la requête
...........Valeur retour du fputs : 19
....Lecture de la réponse
$reponse = stream_get_line($fp,1024,'\0'); Même comportement ! Je pense que la fonction stream_get_line (ou mm fread) plante vu que à l'affichage je n'ai même pas : ...........Valeur retour du fread : Ce qui devrait être affiché même si $reponse est vide, non ? |
D'après manuelphp.com stream_get_line() devrait réagir ainsi :
La lecture se termine lorsque length ont été lus, ou que la chaîne ending est trouvée dans le flux (et qui n'est pas inclue dans la valeur retournée), ou la fin du fichier (le premier des trois). Donc même si il s'avère que le caractère de fin n'est ni \0 ni \n la lecture devrait bien s'arrêter de toute façon (le résultat ayant soit une fin soit étant plus long que 1ko) ! |
Re, bien mangé ? ^^
|
Ca va j ai mangé kfc avec les gas de la boite x)
|