2011-01-06 16 views
1

私はイーサネットプログラミングの初心者です。私はイーサネットポートにアクセスし、そこからパケットを送信/受信したいと思います。私はCIM_EthernetPortクラスの使用を考えましたが、それを行う方法はわかりません。助けてください。私は組み込みシステムにデータを送るためのプログラムを書く必要があります。VC++を使用してイーサネットポートにアクセスする方法は?ソケットを使わずに

答えて

6

あなたはソケットが何であるか分かりません。

組み込みデバイスはどのプロトコルを使用していますか?それがTCPかUDP(あるいは生のリンクプロトコル)であれば、それは定義でソケットを使用しています。

ソケットを使わずにイーサネットアダプタと話す必要がある唯一の理由は、ワイヤレベルのモニタまたはパケットスニッファのようなものを書きたい場合です。

ps --------------------------------------------- ----------------

ソケットは、ネットワーク接続の抽象化に過ぎません。UDP接続にはエンドポイントとポートがあります。これは、ソケットを使用している場合には少し哲学的です。あなたはネットワークカードのハードウェアに直接話します。

イーサネットでボーレートを指定していない場合、カードhwは速度をネゴシエートします。
ソケットを使用してUDPによってデータを送信する際のオーバーヘッドはほとんどなく、通常はデータを受信する非常に効率的な方法です。組み込み機器にRTOSを搭載しているのですか、何らかのポーリングで直接ネットワークアダプタと通信しようとしていましたか?

pps --------------------------------------------- ---------------------
エンベデッドデバイスでUDPを使用することは可能です。
まず、いくつかの番号を送信するだけで、UDPが発明されたすべてのことを最終的に再発明して解決します。
標準プロトコルを使用すると、接続の各端点をテストできるツールも利用できます(ハイパーターミナルに相当するものが無料です)。

また、現在複数のデバイスは必要ありませんが、将来は存在する可能性があります。前回の製品でUDPを使用することを主張しました。設計者がイーサネットを単なる高速シリアルリンクと考えていたところです。この製品の多くのユニットをネットワークで結ぶことができれば、巨大な新しい市場が生まれました。

+0

組み込みデバイスにRTOSはありません。私たちはイーサネットポートと直接話をしなければなりません。自分のプロトコルを書いて直接ポートに話すことはできますか?私はVisual Studio IDE(これは完全に私には疎外です)ですから、VC++でこれを行う方法を知っておく必要があります。上記のクラスを見つけましたが、それにアクセスできませんでした。 – KnightScott

+0

組み込みデバイスにRTOSはありません。私たちはそれを直接イーサネットポートに話さなければなりません、私は自分のプロトコルを書いてポートに直接話すことができますか?それはVisual StudioのIDE(これは私にとっては競争の激しいエイリアンです)ですから、私はVC++でこれを行う方法を知っていなければなりません...上記のクラスを見つけましたが、それにアクセスできませんでした! – KnightScott

+0

デバイスがUDPを使用している場合は、vC++のウィンドウから簡単に話すことができます.1つのデバイスと通信する場合、TCPソケットとほとんど同じです(CAsyncSocketを参照)。送信/受信レベル(UDP)では独自のプロトコルは必要ありませんが、パケットの内容に同意する必要があります。 UDPは簡単ですが、あなたにとって悪いパケットは再送されません。アプリケーションに重要なデータがある場合は、そこにあるデータを正しい順序でチェックし、訂正する必要があります。 –

関連する問題