Nacky - Snowland.net

Nacky(Issei Ishii)がDJ/Composerのようなふりして書き散らすblogサイト

Info

Nacky - Snowland.net - blogを移転しました

2008-08-29

PHPでudpブロードキャストが許可されない

手元のCentOS5機でWake on Lan用のプログラムが動かない!
fsockopenでudp://192.168.x.255宛にMagicPacketを送る仕組みだったのですが,broadcastアドレス宛への送信はできない模様(permission deniedと言われます).

PHPというよりOSの制限?

fsockopenではなくsocket関数を使って次のように書いて解決.
$s=socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($s, SOL_SOCKET, SO_BROADCAST, 1);
// ↑SO_BROADCASTでブロードキャストを許可
socket_connect($s, $ip, $port);
socket_write($s, $packet);
socket_close($s);
(エラー処理とかは適宜.変数は適当に読み替えて)

デフォルトでできなくなっているのは容易にブロードキャストしてネットワークに負荷をかけないための措置なのでしょうから,慎重に.

posted at 16:33:08 on 2008-08-29 by nacky - Category: Com/Tech ( UNIX , PHP )

ソニーストア

TrackBack

このエントリにトラックバックはありません
トラックバックURL

Comments

No comments yet

Add Comments