利用PHP的socket发起HTTP请求
直接上代码:
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!socket_connect($socket, '58hualong.cn', 80)) {
exit(sprintf('58hualong.com connect error.message:%d', socket_last_error($socket)));
}
$message = "GET / HTTP/1.1\r\n";
$message .= "Host: 58hualong.cn\r\n\r\n";
$message .= "";
if (!socket_send($socket, $message, strlen($message), MSG_EOF)) {
exit('send message error.message:' . socket_last_error($socket));
}
// 返回
$response = '';
socket_recv($socket, $response, 1024 * 14, MSG_WAITALL);
echo $response;
// 关闭连接
socket_close($socket);
首先,socket_create
创建一个 socket 资源,然后 socket_connect
连接到目标服务器,连接成功之后,利用 socket_send
发送一条HTTP协议信息到服务端,服务端判断是HTTP请求就会正常处理,然后返回数据,这里我们利用 socket_recv
用来接收服务端返回的消息,需要注意的一点是 socket_revc
的第二个参数是读取服务端内容的长度,第三个参数是决定什么时候读取完,这里我们选择的是 MSG_WAITALL
也就意味着我们配置的读取缓冲区满了才会返回,当然也可以选择 MSG_EOF
,但是在HTTP里面不行。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭