PHP网页插座无法绑定套接字 [英] PHP web socket unable to bind socket

查看:160
本文介绍了PHP网页插座无法绑定套接字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Apache服务器和侦听端口8000和80

我用下面的PHP函数创建一个Web接口

 私有函数的createSocket($主机,$端口)
{
    如果(($这个 - >掌握= socket_create(AF_INET,SOCK_STREAM,SOL_TCP))小于0)
    {
        死(socket_create()失败,原因:.socket_strerror($这个 - >掌握));
    }    自::控制台(插座{$这个 - >掌握}创建);    socket_set_option($这个 - >主,SOL_SOCKET,SO_REUSEADDR,1);
    #socket_set_option($主人,SOL_SOCKET,SO_KEEPALIVE,1);    如果(($ RET = socket_bind($这个 - >掌握,$主机,$端口))小于0)
    {
        死(socket_bind()失败,原因:.socket_strerror($ RET));
    }    自::控制台(插座势必{$主机}。{$}端口);    如果(($ RET = socket_listen($这个 - >硕士,5))℃下)
    {
        死(socket_listen()失败,原因:.socket_strerror($ RET));
    }    自::控制台('开始监听套接字。');    $这个 - > allsockets [] = $这个 - >掌握;
}

假设$主机为127.0.0.1,端口$ 8000是

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

当我删除$端口,它不显示错误,但套接字服务器保持倾听和无反应

这是什么问题?


解决方案

  

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


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

I have a apache server and listen to port 8000 and 80

i use below php function to create a web socket

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;
}

assume the $host is 127.0.0.1 and $port is 8000

when i go to shell console and start the socket server, it said Warning: socket_bind(): unable to bind address [98]: Address already in use

when i remove the $port, it doesnt show error, but the socket server keep listening and no response

What is the problem?

解决方案

Warning: socket_bind(): unable to bind address [98]: Address already in use

This means that your server is already using the port that you selected. You'll have to choose another port until you find one that is not in use.

这篇关于PHP网页插座无法绑定套接字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆