2011-07-13 8 views
1

のCプログラム(IPアドレスを使用しない)を使用してMACアドレスのみを使用して2つのシステム間で通信する方法を知りたい。私はこれが生のイーサネット通信だと思う。私の要件は、MACアドレスを使用することによってのみクライアントからサーバーにデータを送信することです。これは、独自のrawイーサネットフレームを作成することで可能です。MACアドレスのみを使用して2つのシステム間で通信する

これについてお手伝いしてください。もし誰かがC言語でコードを書いていたら、共有してください。

このリンクはあなたを助けるかもしれない、http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html

+0

どのようなOSですか?あなたはリンクのローカルIPアドレスを確立できますか? – bdonlan

+0

また、クライアントとサーバーが同じサブネット上にあることを確認する必要があります(つまり、両者の間にルータはありません)。彼らが同じハブにいる場合、あなたは大丈夫です。 – MSumulong

+0

私はLinuxのsyetm(Ubuntu)を使用しています。はい、私はIPアドレスを使用して2つのsyetems間で通信することができ、両方が同じネットワーク上にあります。少なくとも私はシステム内で通信できるはずです。つまり、ある端末でクライアントプログラムを実行し、別の端末でサーバプログラムを実行すると、サーバ端末にデータを受信する必要があります。このリンクは、あなたに役立ちますhttp://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html – purpose

答えて

0

Hereは、多分あなたはこれを活用することができ、C#のための例です。正しいコードはOSに依存し、マイクロコントローラのプログラミング時に使用されるチップからも影響を受けます。

3

libpcapライブラリを使用すると、生のイーサネットパケットをアセンブルし、アダプタに直接送信することができます。最も困難な部分は、正しいアダプタの検出です。これは、ほとんどのプラットフォーム(Win PCAPなど)でC/C++を使用するために設計されています。

これはあなたが望むものであることを確かめてください:あなたは、生のイーサネットパケットインターフェイスが使用されているいくつかのプロジェクトを見てきましたが、最終的になるまで再送やウィンドウ処理などのために独自のバージョンのTCP/IP(Windows/Linuxを使用している何百万人ものユーザーやプラットフォームでテストされていないものの1つだけ)ほとんどのイーサネットチップにはTCP/IPスタックを高速化する機能があります。

+2

他のすべてが失敗し、本当にこれが必要な場合は、より有用な識別子を交換するためにのみ使用できます( IPアドレスまたはホスト名)。 –

関連する問題