- 締切済み
phpでパケットのメッセージフォーマット注出
今C言語からUDPでパケットを送って、phpで取得することをしています。 その際、phpでパケットのフォーマット通りにデータを取得する方法が分かりません。 var_dumpで表示させると、配列で表示されるのかと思いきやString型でもらっています。 classで各フォーマットに対応する変数を用意して、インスタンスをつくり、そこに入れようとしていたのですが、うまいことできませんでした。 何かヒントとなるようなことありますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
「雑な感じで既存のコードを流用しても安全でそこそこ汎用性のあるフォーマット」としてはJSONが優秀だと思います。 PHP側 http://www.php.net/manual/ja/function.json-decode.php C言語側 http://www.digip.org/jansson/ ちなみにPHP側でlistenする場合、生のsocket関数を使うよりそれらをラップしたstream関数のほうがお勧めです。以下のページの例2を参考にしてください。 http://www.php.net/manual/ja/function.stream-socket-server.php
- agunuz
- ベストアンサー率65% (288/438)
>配列で表示されるのかと思いきやString型でもらっています。 string型を自分でparseするしかないです。 $_SERVER['QUERY_STRING']から$_GETに展開されるとかはphp側で面倒みてくれますが、それ以外の「フォーマット」は自分で展開するのが基本です。 >classで各フォーマットに対応する変数を用意して、インスタンスをつくり、 >そこに入れようとしていたのですが、うまいことできませんでした。 どのように書いていて「うまいことできません」なのでしょうか?文字列を任意のメソッド(もちろんコンストラクタでもいい)に渡して、そのメソッドで展開して変数にセットしていくだけですよね。