WinPcapの送受信を抽象化します。
Monaのネットワーク実装に、なぜWinPcapが関係あるのか?と思われた方もいるかもしれません。 がんばってWinPcapの使い方を学んだのには理由があります。 それは、Mona用のプロトコルスタックの開発のほとんどをWindows上で行ってしまおうという意図があるからです。 そこで必要なのがWinPcapなのです。 でもWinPcapは、Monaで使えないよ?という疑問はもっともです。 MonaにはWinPcapはありませんが、代わりにid:Yamamiさんが開発されたドライバがあります。 では、もしもWinPcapとMona上のドライバが同じインターフェースで使えたらどうなるでしょうか? そう、プロトコルスタックはNICドライバがWindows上で動いている(WinPcap)か、Mona上で動いているか知らなくて良いことになります。 このように同一のインターフェースを提供することで、Monaコンポーネントの開発をWindows上でほとんど行うことは、これが初めてではなく、実はファイルシステムの実装のときに散々行っています。 というわけで、こんなクラスを作ってみました。 手元ではばっちり動いています。 Nicクラス public: virtual int Open() = 0; virtual int Close() = 0; virtual int Read(void* buffer, int size) = 0; virtual int Write(const void* buffer, int size) = 0; }; WinPcapNicクラス class WinPcapNic : public Nic { public: WinPcapNic(); virtual ~WinPcapNic(); int Open(); int Close(); int Read(void* buffer, int size); int Write(const void* buffer, int size); protected: pcap_t* handle; };
コメントはありません。 コメント/mones2/06.9.WinPcap抽象化?