Je tente de travailler avec des sockets en local et j’ai des erreurs que je n’arrive pas à corriger. Pourriez-vous m’aider, s’il vous plait ?
Voici mon code :
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
46
47
48
49
 
<?php
//Temps maximum d'exécution de la page <gras><couleur nom="rouge">nul</couleur></gras>
set_time_limit(0);       
 
//Coordonnées du serveur == le pc qui lancera cette page
$port = 5502;
$adresse = "localhost";
 
//On crée la socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
if(($socket) === false)
        echo 'La création de la socket a échoué : '.socket_strerror($socket)."\n<br />";
 
//On assigne la socket à une adresse et à un port, que l`on va écouter par la suite
$assignation = socket_bind($socket, $adresse, $port);
if($assignation  < 0)
        echo "L'assignation de la socket a échoué : ".socket_strerror($assignation)."\n<br />";
 
//On prépare l`écoute
$ecoute = socket_listen($socket);
if(($ecoute) === false)
        echo "L'écoute de la socket a échoué : ";			//.socket_strerror($ecoute)."\n<br />";
 
//Le code se bloque jusqu`à ce qu'une nouvelle connexion client soit établie
$client = socket_accept($socket);
if(($client) === false)
        echo "Le client n'a pas pu se connecter : ";			//.socket_strerror($client)."\n<br />";
 
//Lors d'une connexion, le code reprend ici, il est temps de lire ce qu'on nous envoie
if(($reception = socket_read($client , 255)) === false)
        echo "La socket n'a pas pu être lue : ".socket_strerror($reception)."\n<br />";
elseif( $reception == 'plop' )
        $reponse = "J'aime les plop";
else
        $reponse = "J'aime pas les ".$reception;
 
//Si ça ne marche pas, c'est qu`il est déconnecté
if(( socket_write($client, $reponse, strlen($reponse)) ) === false)
        echo "Client déconnecté\n<br />";
else
        echo "Message envoyé : ".$reponse;
 
//Fermeture de la socket du client
socket_close($client);
 
//Fermeture du serveur
socket_close($socket);
?>
1e erreur :
Warning: socket_bind() [function.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:\EasyPHP-5.3.2i\www\workspace\weblux_php\brouillon.php on line 15
Est-ce un problème de port ? J’en ai déjà essayé un certain nombre sans succès.

2e erreur :
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: Un argument non valide a été fourni. in D:\EasyPHP-5.3.2i\www\workspace\weblux_php\brouillon.php on line 20
Quel est l’argument non valide ? la socket n’est pas reliée à un client, je sais. Mais je ne crois pas que cela ne justifie pas l’erreur : lorsqu’un serveur marche, le client n’est pas toujours connecté.

Petite précision : je ne suis pas administrateur sur ma machine. Es-ce que mes problèmes peuvent venir de là ?