socket说明
- 我们都知道通过IP,端口等可以实现两台机器之间的数据互通,但具体要怎么操作,系统给我们提供了socket接口,通过调用socket函数就可以实现互通。
- php的socket扩展和C本身的非常相似,如果找不到php相关的资料,可以对照着C的socket函数来学习,例如:C语言SOCKET编程指南
- php的socket文档,文档中有很多函数,我们只找主要通讯流程的函数理解其流程,其它函数后期用到再去查看即可
通信流程
stream流说明
- 流,算是一种对不同事物,但有相同特性的抽象封装,可能这样说并不理解,但是我们早就使用过了,例如打开文件
fopen
等操作,其实就是用的流,fopen('abc.txt')
实际上就是fopen('file://abc.txt')
,或者是与app交互用到的php://input
等获取post数据也是流的一种 - php官方文档可以看Streams API for PHP Extension Authors和Stream
- 我们只看流中与socket相关的封装,上篇我们建立一个连接需要好几个步骤,比较繁琐,而stream中对此进行了简化封装。至于流的其它包装过滤等功能,可自己去查询资料,好像是在《Modern PHP》中也有章节对此做过讲解。
- 相关的stream函数可以参照Workerman中具体的使用场景,Workerman中没有使用上节的socket函数,而是调用的更加简洁方便的stream函数,