fsockopen

(PHP3 , PHP4 )

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はソケットへのパスとして使用され、 port はこの場合0とする必要があります。 オプションのtimeoutにより接続システムコール がタイムアウトするまでの秒数を指定することが可能です。

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

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

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

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

例 1. fsockopen()の例


$fp = fsockopen ("www.php.net", 80, &$errno, &$errstr, 30);
if (!$fp) {
	echo "$errstr ($errno)<br>\n";
} else {
	fputs ($fp, "GET / HTTP/1.0\n\n");
	while (!feof($fp)) {
		echo fgets ($fp,128);
	}
	fclose ($fp);
}
      
pfsockopen()も参照下さい。