使用swoole实现tcp客户端

<?php
Co\run(function () {
    $client = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP);
    if (!$client->connect('127.0.0.1', 19501, 0.5)) {
        // 连接失败后,不可直接进行重连。必须使用 close 关闭已有 socket,然后再进行 connect 重试。
        echo "connect failed. Error: {$client->errCode}\n";
        //关闭已有socket
//        $client->close();
//        //重试
//        $client->connect('127.0.0.1', 19501);
        //获取连接状态,true为已经连接到服务器,false未连接到服务器
//        $client->isConnected();
    }
    //发送数据,当为true时表示发送成功,false是发送失败
    $client->send("hello world\n");
    //recv 方法用于从服务器端接收数据。
    while (true) {
        $data = $client->recv();
        if (strlen($data) > 0) {
            echo "收到服务器返回数据是".$data;
            $client->send(time() . PHP_EOL);
        } else {
            if ($data === '') {
                // 全等于空 直接关闭连接
                $client->close();
                break;
            } else {
                if ($data === false) {
                    // 可以自行根据业务逻辑和错误码进行处理,例如:
                    // 如果超时时则不关闭连接,其他情况直接关闭连接
                    if ($client->errCode !== SOCKET_ETIMEDOUT) {
                        $client->close();
                        break;
                    }
                } else {
                    $client->close();
                    break;
                }
            }
        }
        \Co::sleep(1);
    }
});
上一篇:使用swoole编写超简单版IMI通信案例


下一篇:Swoole 中协程的使用注意事项及协程中的异常捕获