2012-12-04 7 views
1

J'ai un serveur apache et d'écouter le port 8000 et 80socket Web PHP incapable de se lier socket

j'utilise ci-dessous fonction php pour créer une socket web

private function createSocket($host,$port) 
{ 
    if(($this->master=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) 
    { 
     die("socket_create() failed, reason: ".socket_strerror($this->master)); 
    } 

    self::console("Socket {$this->master} created."); 

    socket_set_option($this->master,SOL_SOCKET,SO_REUSEADDR,1); 
    #socket_set_option($master,SOL_SOCKET,SO_KEEPALIVE,1); 

    if(($ret=socket_bind($this->master,$host,$port)) < 0) 
    { 
     die("socket_bind() failed, reason: ".socket_strerror($ret)); 
    } 

    self::console("Socket bound to {$host}:{$port}."); 

    if(($ret=socket_listen($this->master,5)) < 0) 
    { 
     die("socket_listen() failed, reason: ".socket_strerror($ret)); 
    } 

    self::console('Start listening on Socket.'); 

    $this->allsockets[] = $this->master; 
} 

supposer l'hôte $ est 127,0. 0,1 et $ port est 8000

quand je vais à la console shell et démarrer le serveur socket, il dit Avertissement: socket_bind(): incapable de se lier adresse [98]: adresse déjà utilisée

lorsque je supprime le port de $, il ne montre pas d'erreur, mais le serveur de socket continue à écouter et aucune réponse

Quel est le problème?

Répondre

0

Attention: socket_bind(): incapable de se lier adresse [98]: Adresse déjà utilisée

Cela signifie que votre serveur utilise déjà le port que vous avez sélectionné. Vous devrez choisir un autre port jusqu'à ce que vous en trouviez un qui n'est pas utilisé.

+0

je tente, 1234, 1235, 1236, 8000, 8002, mais même msg – user192344

+0

Ceux-ci sont probablement utilisés, les numéros les plus bas sont généralement utilisés en premier. Essayez les ports au-dessus de 40000. – MrCode

+0

essayez 41234, et vu au port d'écoute actuel, il n'y a pas d'état d'écoute sur 41234, mais renvoyez le même msg, même redémarrez le serveur – user192344