热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swoole中tcp服务的简单操作以及与client的互动

首先做一个tcp服务的脚本tcp.php创建Server对象监听0.0.0.0:9501端口这里写此地址,为不限制客户端的访问$servnewSwo

首先做一个tcp服务的脚本tcp.php

//创建Server对象 监听0.0.0.0:9501端口 这里写此地址,为不限制客户端的访问
$serv = new Swoole_server('0.0.0.0',9501);$serv->set(array('worker_num' => 8,//worker进程数 cpu核数的1-4倍'max_request' => 10000,
));//监听连接进入事件
/** $fd 客户端连接的唯一标志* $reactor_id线程id*/
$serv->on('connect',function($serv,$fd,$reactor_id){echo "Client:{$reactor_id}-{$fd}Connect.\n";
});//监听数据接受事件
$serv->on('receive',function($serv,$fd,$from_id,$data){$serv->send($fd,"Server:".$data);
echo $fd.":".$data.".\n";
});//监听连接关闭事件
$serv->on('close',function($serv,$fd){echo "Client:Close.\n";
});$serv->start();

执行 :php tcp.php
这样一个简单的tcp服务就启动了。


通过服务端口命令查看下tcp的运行状态:

netstat -apn | grep 9501
看到结果:
tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 4826/php

也可以通过查看脚本运行的进程来查看:

ps aft | grep tcp.php
得到结果:
4861 pts/2 S+ 0:00 \_ grep --color=auto tcp.php4826 pts/1 Sl+ 0:00 \_ php tcp.php4827 pts/1 S+ 0:00 \_ php tcp.php4830 pts/1 S+ 0:00 \_ php tcp.php4831 pts/1 S+ 0:00 \_ php tcp.php4832 pts/1 S+ 0:00 \_ php tcp.php4833 pts/1 S+ 0:00 \_ php tcp.php4834 pts/1 S+ 0:00 \_ php tcp.php4835 pts/1 S+ 0:00 \_ php tcp.php4836 pts/1 S+ 0:00 \_ php tcp.php4837 pts/1 S+ 0:00 \_ php tcp.php

然后写一个client脚本来与tcp服务简单互动 client.php:

//连接swoole tcp服务
$client = new swoole_client(SWOOLE_SOCK_TCP);if(!$client->connect("192.168.31.129",9501)){echo "连接失败";exit;
}//php cli常量
fwrite(STDOUT,"请输入消息:");
$msg = trim(fgets(STDIN));//发送消息给tcp server服务器$client->send($msg);//接受来自server的数据
$result = $client->recv();
echo $result;

然后,php client.php
得到:请输入消息:
输入hello world!
同時,服务端也有了反应

5:hello workd.
Client:Close.

小伙伴,你成功了吗


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • PHP socket服务端与客户端的简易通信
    今天学习socket通信的同时,顺便整理了下以前初识socket的知识。现在关于php的socket通信,有些框架已经十分成熟了,比如swoole和workerman,这两个大家可以学习学 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • Telnet的使用(Telnet远程连接Linux)
    一、环境描述:客户端:Win10操作系统 ... [详细]
  • 这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。脚本数据保存如果您已初始化dataProcessor,则用户或以编程方式所做的任何更改都将自动 ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
  • 【宇润日常疯测007】Swoole 协程与传统 fpm 同步模式比较
    为什么80%的码农都做不了架构师?如果说数组是PHP的精髓,数组玩得不6的,根本不能算是会用PHP。那协程对于Swoole也是同理& ... [详细]
  • Swoole在PHP-fpmapache中如何使用task功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人 ... [详细]
author-avatar
mobiledu2502902537
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有