0
Je crée un serveur socket PHP mais je n'arrive pas à faire que mon serveur lise le socket.Comment faites-vous votre serveur PHP lire votre socket que vous venez de créer?
$this->log("Creating socket (please wait)...");
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if(socket_bind($this->socket, "127.0.0.1", 8080) === false){
$this->log("Failed to bind socket to port (8080)");
exit();
}
socket_listen($this->socket, 5);
if(!is_resource($this->socket)){
$this->log("Socket isn't a resource. Something went wrong, exiting.");
exit();
}
$this->log("Socket created, creating socket reader...");
$this->socketReader = new SocketReader($this);
$this->log("server started");
//socket should be non-blocking
socket_set_nonblock($this->getSocket());
//called every 10000 microseconds to read socket (error line here)
public function process(){
$buffer = socket_read($this->getSocket(), 128);
var_dump($buffer);,
}
L'erreur que je reçois est:
`Warning: socket_read(): unable to read from socket [57]: Socket is not connected` when calling proccess().
Pourquoi? La socket est créée avec succès mais elle est erronée lorsque j'essaie de lire des données entrantes potentielles.
Vous devez appeler 'socket_accept()' pour renvoyer un nouveau socket connecté à une connexion entrante. – Barmar
@Barmar Si j'appelle cela, le serveur se bloque. Et si j'appelle set_non_block, il retournera false. Je ne veux pas que le serveur attende les connexions, il suffit de les détecter passivement sur les ticks. – captincrunch
Faites-le non-bloquant, et appelez 'socket_accept' périodiquement. Si elle renvoie false, il n'y a pas de connexion à traiter. Quand il renvoie une ressource, vous pouvez lire cela. – Barmar