swoole Socket篇

关于 PHP socket 的使用,我在之前的工作中使用过一些,自己也动手封装了关于 socket server 和 socket client 的类库,已共享到 GitHub 和码云上面:

当然也有更好的例如 workerman 之类的 socket 开源项目。
但 socket 对于大部分 phper还是比较陌生的一个词语,百度上给出大部分网文关键字都是套接字,比较抽象难懂一些。
socket即套接字,是用来与另一个进程进行跨网络通信的文件,说是“文件”,也很好理解哈,因为在linux中一切都可以理解为“文件”。比如客户端可以借助socket与服务器之间建立连接。你也可以把socket理解为一组函数库,它确实也就是一堆函数。
我们知道,常见的网络应用都是基于Client-Server模型的。即一个服务器进程和多个客户端进程组合而成,如果你还理解为是一台电脑对另一台电脑,可以回去把进程/线程一文再看看了。在Client-Server模型中,服务器管理某种资源,并且通过对它管理的资源进行操作来为客户端提供服务。
那Client和Server又如何实现通信呢?这就要利用socket一系列的函数实现了。
基于套接字接口的网络应用的描述,用下面这张图来理解就好。
套接字接口的网络应用的描述

大致可以描述为:

服务器创建一个socket,绑定ip和端口,在该端口处进行监听,然后通过accept函数阻塞。
当有新的客户端连接进来时,server接收客户端数据并处理数据,然后返回给客户端,客户端关闭连接,server关闭该客户端,一次连接交互完成。

坚持原创技术分享,您的支持将鼓励我继续创作!