zoukankan      html  css  js  c++  java
  • TCP长连接数据传输(同步方式)

    TCP长连接的应用场景

    比如聊天室,游戏等应用,就会使用到长链接

    服务端应用程序

    CLI 挂载启动服务端程序:php server.php
    swoole的运行模式,默认是多进程模式,worker进程数量官方建议设置为CPU核数的1-4倍

    $serv = new swoole_server('127.0.0.1', 9501);
    
    // 工作进程数量. 设置为CPU的1-4倍最合理
    $serv->set([
        'worker_num' => 2,
    ]);
    
    $serv->on('Connect', function ($serv, $fd) {
        echo "new client connected." . PHP_EOL;
    });
    
    $serv->on('Receive', function ($serv, $fd, $fromId, $data) {
        // 收到数据后发送给客户端
        $serv->send($fd, 'Server '. $data);
    });
    
    $serv->on('Close', function ($serv, $fd) {
        echo "Client close." . PHP_EOL;
    });
    $serv->start();
    

    客户端应用程序

    客户端启动发送数据:php client.php

    new swoole_client(socket_type, sync_or_async) 有两个参数
    第1参数:socket类型

    SWOOLE_SOCK_TCP :创建tcp socket
    SWOOLE_SOCK_TCP6:创建tcp ipv6 socket
    SWOOLE_SOCK_UDP:创建udp socket
    SWOOLE_SOCK_UDP6:创建udp ipv6 socket

    第2参数:同步还是异步

    SWOOLE_SOCK_SYNC :同步客户端
    SWOOLE_SOCK_ASYNC :异步客户端

    // 创建一个同步阻塞的tcp socket
    $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
    
    // 随后建立连接,连接失败直接退出并打印错误码
    $client->connect('127.0.0.1', 9501) || exit("connect failed. Error: {$client->errCode}\n");
    // 向服务端发送数据
    $client->send("hello server.");
    // 从服务端接收数据
    $response = $client->recv();
    // 输出接受到的数据
    echo $response . PHP_EOL;
    
    // 关闭连接
    $client->close();

  • 相关阅读:
    将文件读取到内存、打印pe结构
    DIV与IDIV的用法
    内存对齐与硬盘对齐
    逆向笔记013
    自己实现的字符串长度求取、复制、连接
    在一段内存中查找数据
    用Maven构建Mahout项目实现协同过滤ItemCF--集群版
    用Maven构建Mahout项目实现协同过滤userCF--单机版
    从源代码剖析Mahout推荐引擎
    推荐系统第2周--itemCF和userCF
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452922.html
Copyright © 2011-2022 走看看