PHP Web套接字无法绑定套接字

时间:2012-12-04 07:59:25

标签: php apache websocket

我有一个apache服务器并收听端口8000和80

我使用下面的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;
}

假设$ host是127.0.0.1而$ port是8000

当我转到shell控制台并启动套接字服务器时,它说警告:socket_bind():无法绑定地址[98]:地址已在使用中

当我删除$ port时,它不显示错误,但套接字服务器继续监听并且没有响应

有什么问题?

1 个答案:

答案 0 :(得分:0)

  

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

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