最近、立て続けにUDPを使う案件があったので、PHPでUDP送信する方法をまとめておきます。
そもそもUDPとは?
UDPとは「User Datagram Protocol」の略で、TCPと同じようにIPの上位プロトコルで動作するプロトコルのことです。
特徴としては、TCPと違ってコネクションレスなプロトコルなので、TCPに比べると高速に転送を行うことができます。
単純に言うと、コネクション張って → 送受信して → コネクション閉じる という流れがないため素早いけど、
その分信頼性はTCPに劣る、といったものです。
UDPって何に使われてる?
インターネット上のサービスでいうと、ビデオストリーミングや音声通話はUDPで送受信されています。
物理的な部分だと、LAN接続できるテレビなどは、UDPでチャンネルを変えたりすることもできたり、
何らかの機器を動かすためにUDPでコマンドを送ったりすることもあります。
PHPでUDP送信しよう。の前に
送信自体は単純ですが、php.iniでsocket関連のコメントアウトを外す必要があります。
下記の文言が書いてる箇所がありますので、コメントアウトを外しましょう。
extension=php_sockets.dll
PHPでUDP送信
先にコードを載せておきます。
// 送信する機器のIPアドレスとポートを定義 define("_IP_ADDRESS", "192.168.XXX.XXX"); define("_UDP_PORT", "XXXXXX"); // 通信するソケットを生成 $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); // UDPに送るコマンド $command = "XXXXXXXXXX"; // コマンドを送信 socket_sendto($socket, $command, strlen($command), 0, _IP_ADDRESS, _UDP_PORT); // ソケットを閉じる socket_close($socket);
これだけです。
「$command」の内容は送信する機器によって変わるので、機器のコマンドリストなどを参照してください。
結構簡単に送信できるので、PHP側で躓くことは無いと思いますが、
仕事で携わる場合は、送信するコマンドの仕様だったり、機器との接続具合(指定したIPで到達できるのか云々)のほうが時間を取られると思います。
システム開発なら田村技術研究所へ
Webシステムメインで開発してるように見られますが、今回のような裏側の泥臭い開発こそ田村技術研究所が得意とする分野です。
「これよくわからんなー」とか「こんなことできるかな?」などの疑問があれば
いつでもお問い合わせください!