Bonjour,
Je tente de faire des sockets en php selon le protocole TCP et j’ai quelques soucis :
Quand j’exécute le code suivant avec easyPHP tout va bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
    echo"errrrrrrreur";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: 127.0.0.1\r\n";
    $out .= "Connection: Close\r\n\r\n";
 
    fwrite($fp, $out);
    while (!feof($fp)) {  //Teste la fin du fichier. 
        echo fgets($fp, 128);  //Récupère la ligne courante sur laquelle se trouve le pointeur du fichier. 
    }
    fclose($fp);
}
?>
J’ai ce résultat :

HTTP/1.1 200 OK Date: Thu, 08 Jul 2010 12:12:58 GMT Server: Apache/2.2.15 (Win32) PHP/5.3.2 X-Powered-By: PHP/5.3.2 Content-Length: 547 Connection: close Content-Type: text/html; charset=ISO-8859-1 night
night
Compte à rebours avant l'ouverture !
Il reste -146 jour(s), 9 heure(s), 47 minute(s) et 2 seconde(s) !!!!
Sachant que le résultat du compte à rebours est affiché par index.php.

J’ai un logiciel de test sur mon ordinateur qui peut me servir de serveur. Il écoute sur 127.0.0.1 et sur le port 4005.
Donc je change le port (je mets 4005). Je lance mon logiciel de test, je le mets en mode serveur et je lance le script dans easyphp de façon à ce que le PHP soit interprété. Normalement, je m’attendrai juste à ce que mon logiciel me disent qu’il s’est connecter. Mais au lieu de cela j’ai cette erreur :
[T_TRACE_NET(error) 367.531 07/06/2010 11:22:46 NET _DatagramClient ::connect() Call to connect failed
367.531 : ce n° change à chaque fois.

Au début je pensais que j’envoyais de l’UDP à cause du « DatagramClient » alors que je sais qu’il attend une liaison TCP mais d’après ce que j’ai pu voir, je pense maintement que c’est ce que je lui donne.
Avant cette erreur, il me met : « connect to 127.0.0.1 4006 » qui est le client. Donc est-ce parce que c'est parce que je n’attache pas de n° de port à mon script ?

Je vous remercie d’avance pour votre aide.