[PHP-users 17034]Re: UDPブロードキャストを受け取るには?

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 7月 29日 (火) 15:55:16 JST


重松です。こんにちは。

ブロードキャストの受信ですが、動いたかと思ったんですが、
動いたり動かなかったりします。

マニュアル (http://www.php.net/manual/ja/) のソケットを
よく見ているのですが、どうも相当嘘だらけのようで、
いろいろとマニュアルと異なる動きをするように見えます。

日本語マニュアルでサンプルとして示されている、簡易 TCP/Server だとか、
socket_bind() の戻り値を int として評価し、負数の場合エラーとして
処理していますが、私の環境では、var_dump() したところ、
bool が帰り、成功時に true, そうでないときには false のようです。

# 英語版のものは幾分新しそうですが、それでも同じようにエラーを
# 確認しています。

実際のところ、もう少しまともなマニュアルはないのでしょうか?
これでは何が正しくて何が正しくないのか、まさに五里霧中で、

ちなみに、ブロードキャストを受け取る部分は、

	{
		print "$local:$local_port > OPEN\n";
		flush();
		$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
		var_dump($sock);
		if (!$sock) {
			die("socket_create() failed\n");
		}

		$ret = socket_bind($sock, '0.0.0.0', $local_port);
		var_dump($ret);
		if (!$ret) {
			die("socket_bind() failed\n");
		}

		$buf = socket_read($sock, 64);
		var_dump($buf);
		socket_close($sock);

		if ($buf == FALSE) {
			die("socket_read() failed\n");
		}
		// 略...
	}

のようにしていますが、時々受信できないです。
# 常にでないところがものすごく性質が悪いきがします...。

環境:
Windows XP Home + Cygnus Win + PHP 4.3.3RC1 (CGI)

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>



PHP-users メーリングリストの案内