PHP函数介绍—fsockopen(): 打开一个网络连接 (php fsockopen)
PHP的fsockopen()
函数可以用来打开一个网络连接或者是一个Unix 域套接字连接。主要常用于创建一个网络连接并发送 HTTP 请求,也可以用于SMTP,POP3等协议的实现。
一般来说,函数的形式如下:
fsockopen(hostname, port, errno, errstr, timeout);
其中:
- hostname: 是你希望连接的主机名或者IP地址。
- port: 是你希望连接的主机上的端口。详情你可以参考IANA的端口列表。
- errno和errstr: 必须同时使用,若连接遇到错误,这两者将通过引用(reference)分别得到错误的编号和描述。
- timeout: 这个选项表示了到服务器的连接等待超时的时间,由秒数来表示。
在使用fsockopen()实现http请求的流程如下:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
以上代码中,我们首先试图打开到www.example.com网站80端口的连接,然后发送一个简单的GET请求。注意,我们需要显式地发送Connection: Close
,来告诉服务器我们完成了请求后将会关闭连接,这样服务器就会把响应全部发给我们。然后我们读取服务器的响应并输出,直到全部读完后我们关闭连接。
错误处理被做成了如果不能打开连接,那就输出错误信息。在实际的运用中,你可能想要更复杂的错误处理机制。
使用java的ArrayList.add()函数向ArrayList中添加元素 ArrayList实现及添加元素方法 全网首发(图文详解1)
如何在QQ浏览器中保存密码和登录账号 QQ浏览器密码管理设置 全网首发(图文详解1)