PHP fsockopen() 函数用法及示例

PHP HTTP  参考手册

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.nhooo.com", 80, $errno, $errstr, 30);
   
   if (!$connection) {
      echo "$errstr ($errno)
      \n";
   }else {
      $out = "GET / HTTP/1.1\r\n";
      $out .= "Host: www.nhooo.com\r\n";
      $out .= "Connection: Close\r\n\r\n";
      
      fwrite($connection, $out);
      
      while (!feof($connection)) {
         echo fgets($connection, 128);
      }
      fclose($connection);
   }
?>

上面的示例打开连接

PHP HTTP  参考手册