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 の例


$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も参照下さい。