Salut,
J'aimerais faire un programme en PHP qui contient des sockets. Je lis actuellement de la documentation et voila que j'essaye d'exécuter un exemple de code. C'est simplement un serveur qui écoute sur un port, et lorsqu'un client se connecte, celui-ci transmet un message au serveur. Le serveur inverse ce message et le lui retourne.
C'est vraiment tout bête, mais le problème c'est que quand je veux tester ce code, rien n’apparaît dans mon navigateur. Ce qui d'une certaine manière me parait logique vu que le PHP n'est pas dynamique. Donc au moment ou le client va se connecter, le serveur reçoit le message (on fait un echo de se message), on le renvoie au client et le client fait un echo de la réponse.
Mais j'imagine que le PHP charge une fois la page au début et puis ne "rafraîchit" pas. Les echos ne donnent donc rien.. C'est pas comme dans une console ou on attend sagement que le client se connecte, on affiche le message reçu etc... Comment pourrais-je alors faire?
Voici, à tout hasard, l'exemple que je test:
Serveur:
Client:
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
19
20
21
22
23
24
25
26
27
28
29 <? php error_reporting(E_ALL); // set some variables $host = "127.0.0.1"; $port = 25003; // don't timeout! set_time_limit(0); // create socket $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); // bind socket to port $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n"); // start listening for connections $result = socket_listen($socket, 3) or die("Could not set up socket listener\n"); // accept incoming connections // spawn another socket to handle communication $spawn = socket_accept($socket) or die("Could not accept incoming connection\n"); // read client input $input = socket_read($spawn, 1024) or die("Could not read input\n"); // clean up input string $input = trim($input); echo "Client Message : ".$input; // reverse client input and send back $output = strrev($input) . "\n"; socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n"); // close sockets socket_close($spawn); socket_close($socket); ?>
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 <? php $host = "127.0.0.1"; $port = 25003; $message = "Hello Server"; echo "Message To server :".$message; // create socket $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); // connect to server $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); // send string to server socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n"); // get server response $result = socket_read ($socket, 1024) or die("Could not read server response\n"); echo "Reply From Server :".$result; // close socket socket_close($socket); ?>
Partager