PHP的fsockopen()函数的使用(一)

博客展示了用Swoole编写的TCP服务端代码及客户端代码。执行客户端时出现阻塞状态,取消服务端后客户端立即收到信息,还提到PHP函数fsockopen()完成了一次tcp服务通信。

(1)服务端代码如下(用swoole写的tcp服务端):

//测试fsockopen函数的使用**********服务端(swoole搭建服务端)

$server = new Swoole\Server('0.0.0.0', 9501);

$server->on('connect', function ($serv) {
    echo 'Starting...';
});

$server->on('receive', function ($serv, $fd) {
    echo 'Receiving...';
    $serv->send($fd, 'Good boy!');//发送普通数据
});

$server->on('close', function () {
    echo 'Closing...';
});

$server->start();

启动tcp服务端:

[root@swoole demo2]# php tcp_server.php

(2)客户端代码如下:  

//测试fsockopen函数的使用**********客户端
function fun_fsockopen_test()
{
    $timeout = 2;
    $errno = 0;
    $errstr = 0;
    $socket = @fsockopen('127.0.0.1', 9501, $errno, $errstr, $timeout);
    if (!$socket) {
        return "error";
    }
    $max_time = 3;
    socket_set_timeout($socket, $max_time);
    fwrite($socket, 'send message');
    $status = socket_get_status($socket);
    if ($status['timed_out']) {
        return "Time Out!";
    }
//$rev = fgets($socket, 1638400);
    $rev = "";
    while (!feof($socket)) {
        $res = fgets($socket);
        $rev .= $res;
    }
    fclose($socket);
    var_dump(trim($rev));//原始数据
}

//调用函数
fun_fsockopen_test();

执行:

[root@swoole demo2]# php fun_fsockopen_test.php

执行客户端后发现一直处于阻塞状态, 这时候Ctrl +C取消服务端, 发现客户端立即收到了信息, 如下:

[root@swoole demo2]# php fun_fsockopen_test.php 
string(9) "Good boy!"
[root@swoole demo2]# 

PHP函数fsockopen()完成了一次tcp服务通信 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值