Graffitiプロトコルでのデータ通信
描画データを設定する処理におけるデータ通信は、基本的な考え方は今まで行ったGDI+プログラミングの手順と同じです。例えば、四角形を描画したい場合、まずはペンもしくはブラシのデータを送ります。次に四角形を送ることを示すデータを送ります。なお、ペンもしくはブラシの設定は、指定されていない場合、黒色を指定したペンもしくは黒色を指定したソリッドブラシにします。また、新しいペンまたはブラシのデータが送られてこない限り、そのまま同じペンまたはブラシのオブジェクトを使うことにします。
描画データを要求して受け取った場合は、始めに描画データ要求のメッセージをサーバへ送ります。そのメッセージを受け取ったサーバは描画データを、要求してきたクライアントに返します。描画データを受け取ったクライアントは、サーバから送られてきた描画データに基づき描画処理を行います。
なぜこのような仕様にしたのかというと、TCP/IPがデータを分割して送る方式である点を強調したかったからです。TCP/IPでは大きすぎるデータはバイト単位で計算されて、定められたサイズで分割して送られます。しかし、その細部を実装するとなると非常に退屈な話なので、要素ごとにデータを送信する方式に決定しました。そのため、実際のTCP/IPでは、データ量が分割送信されることがあるのを覚えておいてください。
まとめ
今回はGDI+プログラミングの基礎と独自プロトコルの定義を通じて、プロトコルそのものの解説を行いました。次回はいよいよ仮想ネットワークの実装を解説します。
仮想ネットワークおよび独自プロトコルの仕様は、あえて細かい部分(エラー処理など)を決定していません。ぜひご自身で実装してみてください。そうすれば、ネットワークに関する知識がより確かなものとなるでしょう。
参考資料
書籍
- 『詳解TCP/IP Vol.1 プロトコル』 W.Richard Stevens 著、橘康雄・井上尚司 訳、ピアソンエデュケーション、2000年12月
- 『マスタリングTCP/IP 入門編 第4版』 竹下隆史・村山公保・荒井透・苅田幸雄 著、オーム社、2007年2月
ホームページ
- @IT 『Master of IP Network』