TCP长连接数据传输(同步方式)[通俗易懂]

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();

TCP长连接数据传输(同步方式)[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111885.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows7 loader怎么用_Windows命令行

    windows7 loader怎么用_Windows命令行Supportedoperatingsystems:*Windows7Ultimate*Windows7Professional*Windows7HomePremium*Windows7HomeBasic*Windows7Start…

    2022年10月12日
    0
  • 初步认识ADRC(自抗扰控制)与应用

    初步认识ADRC(自抗扰控制)与应用这是一个目录ADRC的基本原理一、参考资料推荐二、为什么PID好,以及,为什么PID不够好1.为什么PID好——基于模型的现代控制理论不实用2.为什么PID不够好——PID的缺点三、ADRC给出的方案——如何保留PID的优点,同时弥补PID的缺点1.误差的取法——安排过渡过程2.由误差提取误差微分的方法——跟踪微分器3.加权和的策略不一定最好——非线性反馈4.积分反馈的副作用——扩张状态观测器ADRC的公式以及参数整定一、跟踪微分器(TD)二、非线性反馈函数三、扩张状态观测器(ESO)ADRC应用到

    2022年5月19日
    231
  • declare-styleable:自定义控件的属性[通俗易懂]

    declare-styleable:自定义控件的属性[通俗易懂]做Android布局是件很享受的事,这得益于他良好的xml方式。使用xml可以快速有效的为软件定义界面。可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了。那么如何才能做到像官方提供的那些组件一样用xml来定义他的属性呢?现在我们就来讨论一下他的用法。一、在res/values文件下定义一个attrs.xml文件,代码如下:

    2022年7月13日
    16
  • 算法学习笔记——动态规划法

    算法学习笔记——动态规划法

    2022年1月20日
    67
  • FlashFXP 3.6 Final(正式版)注册码

    FlashFXP 3.6 Final(正式版)注册码昨天登陆FTP提示是否要升级,也没有注意点了下同意,结果升级后是最新英文版本的,把原来的资料也给丢了,忙了半天一看原来的注册码已经不好使用,在网上搜索下,找到一个可以使用的注册码和大家分享下:———————————————————FLASHFXPxgA9UrTnxgAAAAC7W5MNJwTnsl73n0Vuu1AePJgEAG41mgSvHSiDWi1Kg8B5xJNCCCAVCMr9R

    2022年7月26日
    14
  • ubuntu16.04安装cuda9.0(ubuntu18安装nvidia驱动)

    (安装:NVIDIA-384+CUDA9.0+cuDNN7.1)Ubuntu下安装CUDA需要装NVIDIA驱动,首先进入NVIDIA官网,然后查询对应NVIDIA驱动是否支持你电脑的型号。第一步、安装NVIDIAGPU驱动去NVIDIA官网查询是否支持我电脑的GPU如下 可以看出:GeForce700MSeries(Notebooks):GeForceGTX…

    2022年4月14日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号