fsockopen()函数打开一个网络连接或者一个Unix套接字连接。
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
它用于打开Internet或Unix域套接字连接。
初始化一个套接字连接到指定主机(hostname)。
PHP支持以下的套接字传输器类型列表 所支持的套接字传输器(Socket Transports)列表。也可以通过stream_get_transports()来获取套接字传输器支持类型。
默认情况下将以阻塞模式开启套接字连接。当然你可以通过stream_set_blocking()将它转换到非阻塞模式。
stream_socket_client()与之非常相似,而且提供了更加丰富的参数设置,包括非阻塞模式和提供上下文的的设置。
fsockopen()将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets(),fgetss(),fwrite(),fclose()还有feof())。如果调用失败,将返回FALSE。
注意:如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。
序号 | 参数和说明 |
---|---|
1 | hostname 如果安装了OpenSSL,那么你也许应该在你的主机名地址前面添加访问协议ssl://或者是tls://,从而可以使用基于TCP/IP协议的SSL或者TLS的客户端连接到远程主机。 |
2 | port 端口号。如果对该参数传一个-1,则表示不使用端口,例如unix://。 |
3 | errno 保存系统级connect()调用中发生的系统级错误号 |
4 | errstr 错误信息将以字符串的信息返回。 |
5 | timeout 设置连接的时限,单位为秒。 |
试试下面的实例
<?php $connection = fsockopen("www.cainiaojc.com", 80, $errno, $errstr, 30); if (!$connection) { echo "$errstr ($errno) \n"; }else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.cainiaojc.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($connection, $out); while (!feof($connection)) { echo fgets($connection, 128); } fclose($connection); } ?>
上面的示例打开连接