内容简介:这是关于 Swoole 学习的第五篇文章:Swoole 多协议 多端口 的应用。主要参考官方的这两篇文章,进行实现的 Demo。希望通过我提供的 Demo,能够对文档有更加深刻的理解。
第 81 篇文章
这是关于 Swoole 学习的第五篇文章:Swoole 多协议 多端口 的应用。
概述
主要参考官方的这两篇文章,进行实现的 Demo。
-
网络通信协议设计:
https://wiki.swoole.com/wiki/page/484.html
-
多端口监听的使用:
https://wiki.swoole.com/wiki/page/161.html
希望通过我提供的 Demo,能够对文档有更加深刻的理解。
网络通信协议设计
为什么需要通信协议?
官方:TCP协议在底层机制上解决了UDP协议的顺序和丢包重传问题。但相比UDP又带来了新的问题,TCP协议是流式的,数据包没有边界。应用程序使用TCP通信就会面临这些难题。因为TCP通信是流式的,在接收1个大数据包时,可能会被拆分成多个数据包发送。多次Send底层也可能会合并成一次进行发送。这里就需要2个操作来解决:分包 和 合包,所以TCP网络通信时需要设定通信协议。
Swoole 支持了2种类型的自定义网络通信协议 :EOF结束符协议、固定包头+包体协议。
EOF结束符协议
先看下,未设置协议的效果:
发送的每条数据长度都是 23,但在 onReceive 接收数据的时候每次接收的长度不一样,并没有按照想象的方式进行分包。
再看下,设置了EOF结束符协议的效果:
发送的每条数据长度都是 23,在 onReceive 接收数据的时候每次接收的也是 23 ,完美。
主要设置项如下:
不做解释,官方文档已经写的很清楚。
示例代码如下:
server.php
client.php
固定包头+包体协议
先看下,未设置协议的效果:
很明显,在 onReceive 接收到的数据,是少的。
再看下,设置协议的效果:
主要设置项如下:
不做解释,官方文档已经写的很清楚。
示例代码如下:
server.php
client.php
多端口监听的使用
上图,是示例代码中的端口监听:
-
9501 onMessage 处理 WebSocket。
-
9501 onRequest 处理 HTTP。
-
9502 onReceive 处理 TCP。
-
9503 onPacket 处理 UDP。
不多说,看下效果图:
示例代码如下:
server.php
4 个客户端连接的代码分别是:
1、9501 onMessage 处理 WebSocket。可以参考原来文章 Swoole WebSocket 的应用 中的代码即可。
2、9501 onRequest 处理 HTTP。可以参考原来文章Swoole HTTP 的应用 中的代码即可。
3、9502 onReceive 处理 TCP。可以参考原来文章Swoole Task 的应用 中的代码即可。
4、9503 onPacket 处理 UDP。
示例代码:
小结
一、多端口的应用场景是什么?
比如,开发一个直播网站,直播用一个端口,IM聊天用一个端口。
比如,开发一个RPC服务,数据通讯用一个端口,统计界面用一个端口。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Windows/Linux 系统中获取端口被哪个应用程序占用
- Nginx+Tomcat实现80端口转发8080端口
- 猎鹰网络安全工具新功能:主机端口扫描可以自定义端口范围
- nginx代理其他端口到80端口-低调小熊猫的技术小黑屋
- 浅析Linux网络端口
- 443端口共用的方案
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Wireshark网络分析就这么简单
林沛满 / 人民邮电出版社 / 2014-11-6 / 39.00
Wireshark可能是世界上最好的开源网络包分析器,能在多种平台上(比如Windows、Linux和Mac)抓取和分析网络包,在IT业界有着广泛的应用。 《Wireshark网络分析就这么简单》采用诙谐风趣的手法,由浅入深地用Wireshark分析了常见的网络协议,读者在学习Wireshark的同时,也会在不知不觉中理解这些协议。作者还通过身边发生的一些真实案例,分享了Wireshark的......一起来看看 《Wireshark网络分析就这么简单》 这本书的介绍吧!