php から ipmessenger にメッセージを送るクラス
PHP で IPMessenger にメッセージを送るクラスを書いてみた。
うちの使い方は、Linuxサーバに仕掛けて、夜更かしし過ぎないよう cron で 0:00 に時報をブロードキャストしている。
サーバ状態を通知するとかにも使えるね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<php /** * IP Messengerにメッセージを送る * @author Nekyo. * @licence MIT * * @see IP Messenger プロトコルメモ. http://smart-pda.net/isourou/ipmsg/doc/ipmsg_protocol.html */ /** * IP Messengerにメッセージを送る * @param string $targetIp 送信先IPアドレス * @param string $text 送信文字列 * @param string $user ユーザ名 省略時:ipmsg.php * @param string $fromEncode 変換元文字コード 省略時:UTF-8 */ function ipMsg($targetIp, $text, $user = 'ipmsg.php', $fromEnc = 'UTF-8') { $host = 'php'; $msg = join(':', array( 1, // 1固定 time(), // パケット番号 mb_convert_encoding($user, 'SJIS', $fromEnc), // 自ユーザ名 $host, // 自ホスト名 32, // コマンド番号(32=メッセージ送信) mb_convert_encoding($text, 'SJIS', $fromEnc) // 追加部 )); // OSの制限で fsockopen だとブロードキャストできないので // socket_create を使う。 $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_set_option($s, SOL_SOCKET, SO_BROADCAST, 1); // SO_BROADCASTでブロードキャストを許可 socket_connect($s, $targetIp, 2425); socket_write($s, $msg); socket_close($s); } if ($argc <= 2) { echo <<< EOT 使用法:php ipmsg.php [ターゲットIP] [メッセージ] [[名前]] 例) php ipmsg.php 192.168.0.1 "サーバ情報です。" EOT; return; } if ($argc > 3) { ipMsg($argv[1], $argv[2], $argv[3]); } else { ipMsg($argv[1], $argv[2]); } |
まあ、ご自由にお使いください。