[Système] probleme socket php
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
Code:
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);
?> |
client.php
Code:
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);
?> |
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.
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
Citation:
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
Je ne comprend pas trop la.