bonsoir
j ai fait un client-serveur tres simple en PHP. Le serveur attend que le client se connect et lui envoie la chaine "coucou".Une fois que le serveur reçoit la chaine il s arrete. si le serveur ne reçoit pas de connexion il se coupe au bout de 60 secondes
J ai d abord fait mes essai en local en ouvrant une fenetre d internet exploreur pour le serveur et une autre fenetre internet explorer pour le client.
Mon client envoie correctement la chaine vers le serveur.
Voici les codes:
serveur.php
client.php
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <?php set_time_limit(0); $envoyer=false; $chaine_recu=""; $time_start=time(); $time_out=$time_start+60; $socket=socket_create(AF_INET,SOCK_STREAM,0); if($socket==false) { echo "Erreur de creation de socket"; } else { echo"socket créée <br>"; } if (socket_set_nonblock($socket) === false) { echo "socket_set_nonblock() a échoué. Raison : ".socket_strerror(socket_last_error($socket)); } else { echo "socket bloquante"; } $sourceip="127.0.0.1"; $port=8181; $socket_bind = socket_bind($socket,$sourceip,$port); while ( ($envoyer==false) && ($chaine_recu =="")) { $ecoute = socket_listen($socket, 3) or die("impossible de mettre en mode ecoute "); $time=time(); @$sock_fd=socket_accept($socket); @$chaine_recu=socket_read($sock_fd,1024); if ( ($time==$time_out) || ($chaine_recu!="") ) { $envoyer=true; } } echo $sock_fd."<br>"; echo "<br> chaine_reçu=".$chaine_recu."<br>"; echo "fin"; socket_close($socket); ?>
Le but c est quand meme la mise en réseau.J ai donc mis l'ip de l ordinateur dans le fichier serveur a la place de 127.0.0.1 et le port 8181.
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 <?php $chaine="coucou"; $socket=socket_create(AF_INET,SOCK_STREAM,0); if($socket==false) { echo "Erreur de creation de socket"; } else { echo"socket créée <br>"; } $sourceip="127.0.0.1"; $port=8080; socket_connect($socket,"127.0.0.1", 8080); socket_write($socket,$chaine,strlen($chaine)); socket_close($socket); ?>
Dans le doute j ai ouvert le port 8181 dans la livebox.
Probleme quand je lance le serveur avec l'adresse ip de mon pc plantage au niveau de bind.Voici le code d'erreur
Je ne comprend pas trop la.Warning: socket_bind() unable to bind address [0]: Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée. in d:\iut save\easyphp1-8\www\serveur.php on line 25
Partager