2009-04-20 10 views
6

私は、通信ライブラリをLinuxからWindowsに移植しています。私は私のアプローチが大部分のものであることを知っています。ライブラリはすべての通信にすべての生のイーサネットレベルのフレームを使用します。Winsockを使用したRawイーサネットフレーム

私が移植しているライブラリは、PF_PACKETファミリとstruct sockaddr_llを使用しています。 MSDN winsockサイトを参照した後、同等のファミリ/構造体が見つかりませんでした。私のアプローチはここにあるべきですか?

私はいくつかのアイデアを持っていますが、それが良いアイデアであるかどうかはわかりません 私はPF_UNSPECを指定できません。 私はPF_PACKETが表す数値を渡すことができます(それは符号なしのショートです) Windowsで独自のsockadddr_ll構造体を作成することもできます。

これらのアイデアはどれも私にとってはうれしくはありませんが、実際には動作しそうにないハックのようです。

誰かが何か提案があれば、私はそれを感謝します。

答えて

3

Raw Sockets(ネットワークレイヤ、トランスポートレイヤ、およびアプリケーションレイヤの情報を記述する必要がある)を指しているとします。新しいWindowsバージョン(XP SP2以降)では、多くの制限があるローソケットに対するサポートが非常に限られています。

More info(「rawソケット上の制限」をスクロールダウン)

ソリューションは、私は信じて、あなたはそれらのシステム上send raw packetsすることを可能にする、WinPcapを使用することです。

+0

OK、rawソケットの制限事項は当てはまりません。私のアプリケーションは2番目のレイヤーだけ上に上がります。つまり、イーサネットフレームをレンダリング/受信するだけで、TCP/UDP/IPは必要ありません。 – devin

+1

実際はそうです。 WinPcapで未処理のパケットを送信する例を見てください。必要なものを見つけられます:) – Aziz

+0

ウィンドウにはレイヤー3より下のものはありません。 – Aziz

関連する問題