2012-12-04 60 views
1

我有一个Apache服务器和侦听端口8000和80PHP web套接字无法绑定套接字

我用下面的PHP函数创建一个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; 
} 

假设$主机是127.0。 0.1和$端口是8000

,当我去外壳控制台并启动套接字服务器,它警告说:socket_bind():无法绑定地址[98]:在使用

当地址已我删除$端口,它不显示错误,但套接字服务器保持收听和没有反应

问题是什么?

回答

0

警告:socket_bind():无法绑定地址[98]:地址已在使用

这意味着你的服务器已经使用您选择的端口。您必须选择另一个端口,直到找到一个未使用的端口。

+0

我试试,1234,1235,1236,8000,8001,8002,但是同样msg – user192344

+0

那些可能也在使用中,较低的数字通常首先使用。尝试40000以上的端口。 – MrCode

+0

尝试41234,并查看当前监听端口,41234上没有监听状态,但返回相同的msg,甚至重启服务器 – user192344