小ネタ」タグアーカイブ

ASCIIコード

【PHP】文字列をASCIIコードにする

ちょっとした勘違いから何に使うのかわからないものを作ってしまった…

という経験ありますよね?

前回の記事「PHPでUDP送信」で取り上げたUDP送信を行っていたのですが、

UDPの機器に「コマンドはASCII文字で送信すること」と書いてあったので、

てっきりコマンドをASCIIコードに変換して送信するのかと思い、もじれつをASCIIコードに

変換する関数を書いてしまいました…。

ASCII文字とASCIIコードを勘違いするとは…いやはや…。

何の役に立つかはわかりませんが、誰かの役に立つことを願って書いておきます(苦笑)

function text2ascii($text){
	// 初期化
	$res = array();
	// 引数を1字ずつ分解してordでASCIIコード化する。
	for($i=0;$i<strlen($text);$i++){
		// 半角スペースを付加することで2桁区切りのよく見るASCIIコードに整形
		$res[] = ord($text[$i])." ";
	}
	// impkodeで文字列を結合させて返す
	return implode($res);
}

めちゃくちゃ単純です。

使い方

上記の関数を定義し、

$ascii = text2ascii(“変換したい文字列”);

と言う具合に呼び出すだけで文字列がすべてASCIIコード化されて

$asciiに挿入されます。

【PHP】PHPを使ってUDP送信する方法

最近、立て続けに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システムメインで開発してるように見られますが、今回のような裏側の泥臭い開発こそ田村技術研究所が得意とする分野です。
「これよくわからんなー」とか「こんなことできるかな?」などの疑問があれば
いつでもお問い合わせください!