fsockopen

fsockopen -- インターネットもしくはUNIXドメインのソケット接続をオープンします

説明

int fsockopen(string hostname, int port, int [errno], string [errstr], double [timeout]);

Internet (AF_INET) ドメインまたは Unix (AF_UNIX)ドメインにおいて ストリーム接続を初期化します。 Internet ドメインの場合、 hostname のポート port へのTCPソケット接続がオープンされます。 Unix ドメインの場合、hostname あhソケットへの パスとして使用され、port はこの場合0とする 必要があります。 オプションのtimeout により接続システムコール がタイムアウトするまでの秒数を指定することが可能です。

fsockopen()は、ファイルポインタを返します。 このファイルポインタは、 (fgets(),fgetss(), fputs(), fclose(), feof() のような) 他のファイル関数で使用可能です。

呼び出しに失敗すると FALSE が返され、オプションの errnoおよびerrstr 引数が指定されている場合、システムレベル の connect() コールで生じた 実際のシステムレベルエラーを示すように設定されます。 errno は 0 なのに、返り値がFALSEであれば、connect()の呼び出しの前に エラーが発生したことを示します。この場合、おそらくはソケットの初期化に 原因があります。引数 errno および errstr は参照渡しでなければならない ことに注意してください。

環境により、UNIXドメインまたはオプションの接続タイムアウトは利用 できません。

ソケットはデフォルトでブロックモードで開かれます。 set_socket_blocking()を使用して、 非ブロックモードに切換えることができます。

例 1. fsockopen の例

  1 
  2 $fp = fsockopen("www.php.net", 80, &$errno, &$errstr, 30);
  3 if(!$fp) {
  4 	echo "$errstr ($errno)<br>\n";
  5 } else {
  6 	fputs($fp,"GET / HTTP/1.0\n\n");
  7 	while(!feof($fp)) {
  8 		echo fgets($fp,128);
  9 	}
 10 	fclose($fp);
 11 }
 12 	  
pfsockopen()も参照下さい。