//首先创建一个Socket句柄
if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) {
echo socket_last_error();
exit;
}
echo "创建Socket句柄 \n";
//连接到服务器的某个对接端口
if(!socket_connect($sock, 'wwww.example.com', 80)) {
echo socket_last_error();
exit;
}
echo "连接服务器 \n";
//发送一个简单的http信息
$message = "GET /index.html HTTP/1.1 \r\n\r\n";
//发送数据至服务器
if (!socket_send($sock, $message, strlen($message), 0)) {
echo socket_last_error();
exit;
}
echo "请求发送成功 \n";
//接受客户端的响应
if(socket_recv($sock, $buf, 1024, MSG_WAITALL) === false) {
echo socket_last_error();
exit;
}
//输出服务器响应
echo $buf;
基本操作总结:
- 创建一个Socket句柄;
- 连接到服务器的接口;
- 发送HTTP消息;
- 发送数据到服务器;
- 接受到客户端的响应信息;
- 输出服务器的响应;
PHP开发者在编写HTTP应用的时候,一般使用的是curl扩展,curl扩展和PHP Socket包的区别在于curl扩展做了更多的抽象,完全的忽略了网络的存在,而PHP Socket包和底层的Socket API更加类似,灵活度更加强大,当然,对于TCP/IP的本质更加接近。