讲解php websocket框架 phpsocket编程
概述Socket用于进程间通信 。进程间通信通常基于客户端—服务端模型 。此时,客户端—服务端是可以彼此交互的应用程序 。客户端和服务端之间的交互需要连接 。Socket编程负责的就是为应用程序之间建立可进行交互的连接 。
Socket变量产生一个socket,你需要三个变量:一个是协议,一个socket类型和一个公共协议类型 。
- 协议
AF_INET6//产生socket的协议,使用TCP或UDP来传输,用在IPV6的地址
AF_UNIX//本地协议,使用在unix和linux系统上,它很少使用,一般都是当客户端和服务器在同一台机器上的时候使用

文章插图
- Socket类型
SOCK_DGRAM//这个协议是无连接的、固定长度的传输调用 。该协议是不可靠的,使用UDP来进行它的链接 。
【讲解php websocket框架 phpsocket编程】SOCK_SEQPACKET//这个协议是双线路的、可靠的链接,发送固定长度的数据包进行传输 。必须把这个包完整的接受才能进行读取 。
SOCK_RAW//这个socket类型提供单一的网络访问,这个socket类型使用ICMP协议 。
SOCK_RDM//这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供数据链路层使用,不保证数据包顺序 。
- 公共协议
UDP//用户数据报文协议,它是一个无连接,不可靠的传输协议
TCP//传输控制协议,这是一个使用最多的可靠的公共协议,他能保证数据包能够到达接管者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包
Socket连接过程根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认 。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态 。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字 。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求 。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了 。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求 。
PHP socket内部源码

文章插图
PHP Socket模拟请求

文章插图
当处理纯文本的时候,fgets获取最后一行字符后,foef函数返回的结果并不是TRUE 。实际的运算过程如下:
- while()继续循环 。
- fgets 获取倒数第二行的字符串
- feof返回false,进入下一次循环
- fgets获取最后一行数据
- 一旦fegets函数被调用,feof函数仍然返回的是false 。所以继续执行循环
- fget试图获取另外一行,但实际结果是空的 。实际代码没有意识到这一点,试图处理另外根本不存在的一行,但fgets被调用了,feof放回的结果仍然是false
- 进入死循环
推荐阅读
- php连接mysql数据库代码 php操作mysql数据库函数
- php一般用的开发工具 php用什么软件比较好
- 讲解noteexpress正确格式化 noteexpress使用教程图文
- 讲解3dmax2014安装教程详细 3dmax2014安装教程
- php后端和java后端的区别 php后台开发框架
- 讲解linux修改环境变量并生效 linux配置环境变量命令
- 讲解自己设计的海报 海报分析怎么写
- 视力不好可以考驾照吗 考驾照讲解
- 讲解雷电模拟器应用分身 雷电多开电脑配置
- mysql数据库架构讲解 mysql数据库介绍基本情况