background image

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  

 

这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接 。这是一