質問: "I_STOPPED") { I_start(); } ``` などとするのでしょうか? (・・・なんか違うんじゃないか、文字列で伝えるより洗練されたやり方があるのではないかと思っています。) 浅学で恐縮です。 アドバイスのほどよろしくお願い致します。 以上
回答: こんにちは。 > > ソケット通信でメッセージをやり取りする時のデータはどういう形式が王道なのでしょうか? > > > IP通信するコンピュータ同士は、同じCPUでない可能性を無視できません。 なのでバイナリ形式では互換性が無いこともかなり多いです。特にエンディアンですね。 この問題が発生しにくいので文字列形式が多いのだと思います。バイナリで処理系フリーでやりとりできる仕組みを実装した後、文字列でやり取りしたら、その楽さに感動するレベルです。 単に「停止した」と言うタイミング情報しか送らないのであれば送るデータはなんでも良いと思います。 何か変なパケットが紛れ込んできて誤動作しないよう多少のプロテクトをかける意味で"I_STOPPED"であることを確認するのはありと思います。(プロトコルを知っている悪意のある人がいると簡単にいたずら?されるかも。) ところで、"I_STOPPED"の送信時、最後のNULL文字を送信していないようです。事前のbufクリアをお忘れなく。