プログラムを作成して2台のマシンで実行し、イーサネットフレーム内のあるマシンから別のマシンにデータを送信したいとします。イーサネットベースのネットワークプログラムをC++で書くことはできますか?
通常、アプリケーションデータはOSIモデルのレイヤ7にあります。カーネル制限やAPI制限などがあり、宛先MACアドレスを指定してデータを送信できるプログラムを作成できませんイーサネットペイロードとしてのMAC?次に、着信フレームをリッスンし、指定された送信元MACアドレスからフレームを取得し、フレームからデータのペイロードを抽出するプログラムを作成しますか?
(私はIPやTCP/UDPヘッダーのような他のオーバヘッドは望んでいないので、レイヤー2よりも上に行きたくはありません)。
これはC++で行うことができますか、またはすべての通信がIPレイヤーで行われる必要がありますか?これはUbuntuで行うことができますか?例を指し示す、または提供するための余分な愛! :D
私の問題は明らかにC++のネットワークプログラミングには新しく、私が知る限り、ネットワーク上で通信したい場合は、IP層で動作するsocket()
コールなどを使用する必要がありますですから、OSIレイヤ2で動作するC++プログラムを書くことができます。これにはAPIがありますか?Linuxカーネルはこれを許可しますか?
C++はプログラミング言語であり、IPレイヤは抽象的な概念です。あなたのテキストの中の他のものをどのように置き換えるかは、私が超えています。 – littleadv
@ littadadv:なぜですか?彼は何を尋ねるのか正確には分かりません( "C++でどのようにrawソケットを使うのですか?")が、意味を完全に理解することができます。 – cha0site
理論的には、C++が後で2になるのに問題はないはずですが、OSのサポートによって制限されるかもしれません。 UDPにはほとんどオーバーヘッドがありませんが、それを使用してください。 –