par
dorian » 06 déc. 2012, 00:50
Bonjour,
Je travaille sur un projet perso, et j'ai un souci au niveau de la gestion de socket en multi client.
d'aprés php.net, il est possible de passer a la fonction socket_read(), soit une socket créé par socket_create soit accepté par socket_accept.
Si je comprend bien, celle renvoyé par socket_create est la socket serveur, et celles renvoyés par socket_accept sont les socket client, est ça ?
Si oui sa m'arrangerai de mettre ma socket serveur en parametre de socket_read pour attendre que un client parmi plusieurs ecrive dans la socket.
Plus clairement, j'accepte 4 clients et attende que l'un d'entre eux ecrive, mais je ne peux pas mettre un une socket client precise dans socket_read vu que je sais pas qui va ecrire ...
Et quand je met la socket serveur sa plante...
Code : Tout sélectionner
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() a échoué : raison : " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $this->address, $this->port) === false) {
echo "socket_bind() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
}
/*Accepte client */
for($i=0;$i<$this->maxClient;$i++){
if(($client = socket_accept($sock)) === false){
echo "socket_accept() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}else echo "<br/>Client $client[$i] has connected\n";
/*on stock les clients(socket) dans un membre de l'objet joueur*/
$this->joueurs[$i] = new Joueur($client,$i);
}
while($start){
$messageClient = socket_read($sock , 1024);//PHP_NORMAL_READ
/*suite .....*/
Bonjour,
Je travaille sur un projet perso, et j'ai un souci au niveau de la gestion de socket en multi client.
d'aprés php.net, il est possible de passer a la fonction socket_read(), soit une socket créé par socket_create soit accepté par socket_accept.
Si je comprend bien, celle renvoyé par socket_create est la socket serveur, et celles renvoyés par socket_accept sont les socket client, est ça ?
Si oui sa m'arrangerai de mettre ma socket serveur en parametre de socket_read pour attendre que un client parmi plusieurs ecrive dans la socket.
Plus clairement, j'accepte 4 clients et attende que l'un d'entre eux ecrive, mais je ne peux pas mettre un une socket client precise dans socket_read vu que je sais pas qui va ecrire ...
Et quand je met la socket serveur sa plante...
[code]
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() a échoué : raison : " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $this->address, $this->port) === false) {
echo "socket_bind() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
}
/*Accepte client */
for($i=0;$i<$this->maxClient;$i++){
if(($client = socket_accept($sock)) === false){
echo "socket_accept() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}else echo "<br/>Client $client[$i] has connected\n";
/*on stock les clients(socket) dans un membre de l'objet joueur*/
$this->joueurs[$i] = new Joueur($client,$i);
}
while($start){
$messageClient = socket_read($sock , 1024);//PHP_NORMAL_READ
/*suite .....*/
[/code]