文章大纲

阿里云安全组开放了端口,swoole client还是连接不上

2020-09-10 22:44:37

最近工作中有一些关于swoole的问题解决不了,所以打算系统的学习一下swoole。


刚开始第一步创建服务端和客户端,就遇到客户端程序始终连不上服务端的问题。


起初提示需安装ext-aysnc扩展错误

起初报如下错误:

PHP Fatal error:  Swoole\Client::__construct(): 
please install the ext-async extension, using Swoole\Async\Client in /opt/study/client.php on line 3

这是因为程序创建的客户端,用了异步参数,而且代码是swoole4.4版本的,说是在swoole4.5版本下异步客户端创建方式有调整,具体调整啥,暂且不管了,先就直接用同步参数了。

$client = new Swoole\Client(SWOOLE_SOCK_TCP);


启动服务程序,端口成功处于监听状态

swoole tcp服务端程序如下:

$serv = new Swoole\Server("127.0.0.1", 6400);
$serv->set([
    'work_num' => 2
]);

//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) {
    echo "Client: Connect.\n";
});


启动tcp服务后,用netstat -anop查看,9501端口是处于监听状态的,可是client程序connect却总提示失败。

阿里云服务器里安全组,我也是针对任意ip创建了9501端口的入方向规则。

实在没辙,换个6400端口,结果一样,都是报连接失败的提示:

PHP Warning:  Swoole\Client::connect(): connect to server[47.115.1.192:9502] failed,
 Error: Connection refused[111] in /opt/study/client.php on line 5


服务程序ip,改成0.0.0.0

无可奈何,最后只好在阿里云里提交工单了。结果是要求服务端ip,必须要用0.0.0.0,而不是127.0.0.1。经过测试,果然可以了。至于为何,懒得追究了。



我要评论
评论列表