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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言算法之将十进制数转换成二进制数[通俗易懂]

    C语言算法之将十进制数转换成二进制数[通俗易懂]导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数。先将源代码展示给大家:#include<stdio.h>voidmain(){//进制转换函数的声明inttransfer(intx)…

    2022年5月19日
    66
  • pycharm2022.01.13激活码CSDN-激活码分享

    (pycharm2022.01.13激活码CSDN)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    63
  • DB2 DECODE函数

    DB2 DECODE函数DB2DECODE函数的用法:在查询数据,需要进行条件判断时,一般我们使用CASE…WHEN实现,当判断条件为相等时,除了使用CASE…WHEN实现,还可以使用DECODE函数。若要使用like、>、DECODE()使用方法: decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)DECODE()含义说明:IF条件=值1THEN

    2022年7月25日
    32
  • Telerik的RadControls控件(三)

    Telerik的RadControls控件(三)相信大家学习了RadControl中的RadWindow、RadAjaxManager、RadAjaxLoadingPanel控件后,一定会觉得它是解放.Net技术人员Web开发的技术工具,从而不再为Asp。NET中的局部刷新而绞尽脑汁。  现在我告诉你,前边才仅仅是你发现Web开发更加容易、方便的第一步,通过下来项目中其他常用Rad控件的介绍,你会更加欣喜若狂。好了下来我就介绍另一重量级的控

    2022年7月24日
    6
  • git的常用命令_git bash命令

    git的常用命令_git bash命令Git 基础 —— 常用命令

    2022年4月21日
    49
  • Android 中屏幕点击事件的实现

    Android 中屏幕点击事件的实现在android下,事件的发生是在监听器下进行,android系统能够响应按键事件和触摸屏事件,事件说明例如以下:onClick(Viewv)一个普通的点击button事件booleanonKey

    2022年7月3日
    17

发表回复

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

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