函数名:socket_accept()
适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
用法:socket_accept() 函数用于接受一个连接请求,并返回一个新的套接字资源,用于与客户端进行通信。
语法:resource socket_accept ( resource $socket )
参数:
- $socket:必需,一个监听套接字资源,由 socket_create() 或 socket_accept() 返回。
返回值:成功时返回一个新的套接字资源,用于与客户端通信。失败时返回 FALSE,并可通过 socket_last_error() 获取错误码。
示例:
// 创建套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 绑定套接字到 IP 地址和端口
socket_bind($socket, '127.0.0.1', 8080);
// 开始监听连接
socket_listen($socket);
// 接受客户端连接请求
$clientSocket = socket_accept($socket);
// 与客户端进行通信
while (true) {
// 从客户端接收数据
$data = socket_read($clientSocket, 1024);
// 处理数据
// 向客户端发送响应
socket_write($clientSocket, "Hello, client!");
// 结束通信
if ($data === 'quit') {
socket_close($clientSocket);
break;
}
}
// 关闭套接字
socket_close($socket);
上述示例中,我们创建了一个套接字并绑定到本地的 8080 端口。然后通过 socket_listen() 函数开始监听连接。当有客户端连接请求时,我们使用 socket_accept() 来接受连接,并返回一个新的套接字资源 $clientSocket。然后我们进入一个循环,通过 socket_read() 从客户端接收数据,处理数据后通过 socket_write() 向客户端发送响应。如果接收到的数据为 "quit",则关闭与客户端的连接并结束通信。最后我们使用 socket_close() 关闭套接字。