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 : 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);
?>
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
 
<?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

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.