background image

PHP

进阶 php socket 的讲解与实例分析

本文主要讲述了 php 中 socket 的讲解与实例,欢迎参考参考下
在这一章里你将了解到迷人而又让人容易糊涂的套接字(Sockets)。Sockets 在 PHP 中是
没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使
用 socket 进行连接,服务器端将详细的处理信息发送给客户端。
当你看到完整的 socket 过程,那么你将会在以后的程序开发中使用它。这个服务器是一个
能让你连接的 HTTP 服务器,客户端是一个 Web

 

浏览器,这是一个单一的 客户端/服务器 

的关系。

◆ Socket 基础

PHP 使用 Berkley 的 socket 库来创建它的连接。你可以知道 socket 只不过是一个数据结构。
你使用这个 socket 数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在
监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的
一个端口进行会话。这时,服务器端接受客户端的连接请求,那么就进行一次循环。现在
这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。
产生一个 Socket,你需要三个变量:一个协议、一个 socket 类型和一个公共协议类型。产
生一个 socket 有三种协议供选择,继续看下面的内容来获取详细的协议内容。
定义一个公共的协议类型是进行连接一个必不可少的元素。下面的表我们看看有那些公共
的协议类型。
表一:协议
名字/

 

常量 描述

AF_INET 这是大多数用来产生 socket 的协议,使用 TCP 或 UDP 来传输,用在 IPv4 的地

AF_INET6 与上面类似,不过是来用在 IPv6 的地址
AF_UNIX 本地协议,使用在 Unix 和 Linux 系统上,它很少使用,一般都是当客户端和服
务器在同一台及其上的时候使用
 
表二:Socket 类型

名字/

 

常量 描述

SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一
个使用最多的 socket 类型,这个 socket 是使用 TCP 来进行传输。
SOCK_DGRAM 这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用
UDP 来进行它的连接。
SOCK_SEQPACKET 这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。
必须把这个包完整的接受才能进行读取。
SOCK_RAW 这个 socket 类型提供单一的网络访问,这个 socket 类型使用 ICMP 公共协议。
(ping、traceroute 使用该协议)