1

私が取得したいものを説明するために、ここに例を示します。たとえば、1 つの NIC を備えた PC があるとします。単一の IP アドレス 172.16.0.1 を持っています。VLC を使用して、172.16.0.1:1234 への udp ストリームを開始し、VLC の別のコピーを起動して udp://@172.16.0.1:1234 に接続します。これで、ビデオ ストリーミングが表示されます。

sniffer を実行すると、ループバックで 172.16.0.1:some_random_port から 172.16.0.1:1234 へのパケットが表示されます。NIC にトラフィックはありません。

私がやりたいのは、VLC のように、同じコンピューターで udp をストリーミングして受信することです。しかし、主な問題は、pcap が pcap_open() できるのは実際のデバイスだけであり、ループバックでは機能しないことです。

その問題を解決することは可能ですか?

PS Windows と WinPcap を使用していますが、Linux 版とは異なり、パケットを送信できます。

4

1 に答える 1

0

UDP パケットを送受信するだけの場合は、UN*X で通常のソケットを使用するのと同じように、通常の Winsock ソケットを使用することをお勧めします。WinPcap を使用するには、IPとUDP を再実装する必要があり、Windows の同じマシン (または少なくとも一部のバージョンの UN*X) の別のソケットに送信することはできません。

送信しているトラフィックを監視したい場合、残念ながら WinPcap は役に立ちません。NDIS から送受信されるパケットに依存しているためです (そのドライバーは NDIS にプラグインされます)。マシン上のソケットを同じマシン上の別のソケットに接続します。

(ところで、libpcapは Linux と *BSD と Mac OS X と Solaris と Digital/Tru64 UNIX でパケットを送信できることに注意してください。たとえば、数年前から可能でした。libpcap の古いバージョンはそれをサポートしていませんでした。 , しかし、過去数年間に利用可能なバージョンは可能です. しかし、私の最初の段落によると、それらの OS で通常の UDP パケットを送受信するために libpcap を使用することは意味がありません。 Windows での目的)。

于 2011-11-24T10:06:57.830 に答える