pcap - потоковая передача и получение udp на одном компьютере - PullRequest
1 голос
/ 07 октября 2011

Чтобы объяснить, что я хотел бы получить, вот пример. Допустим, у нас есть компьютер с одним NIC. У него один IP-адрес 172.16.0.1. Используя VLC, мы запускаем поток udp с 172.16.0.1:1234, затем запускаем еще одну копию VLC и подключаемся к udp: //@172.16.0.1: 1234. Теперь мы посмотрим потоковое видео.

Если вы запустите sniffer, вы увидите пакеты от 172.16.0.1:some_random_port до 172.16.0.1:1234 при обратной связи. На нашей сетевой карте нет трафика.

То, что я хочу сделать, - это потоковая передача и получение udp на одном компьютере, как это делает VLC. Но главная проблема в том, что pcap может только pcap_open () быть реальным устройством, оно не может работать с loopback.

Возможно ли решить эту проблему?

P.S. Я использую Windows и WinPcap, в отличие от версии Linux, он может отправлять пакеты.

1 Ответ

0 голосов
/ 24 ноября 2011

Если вы просто хотите отправлять и получать пакеты UDP, я бы предложил использовать обычные сокеты Winsock, так же, как вы использовали бы обычные сокеты в UN * X;использование WinPcap требует, чтобы вы повторно внедрили IP и UDP, и не позволят вам отправлять в другой сокет на том же компьютере под Windows (или, по крайней мере, в некоторых версиях UN * X, либо).

Если вы хотите смотреть трафик, который вы отправляете, к сожалению, WinPcap не поможет, поскольку он полагается на пакеты, отправляемые и получаемые из NDIS (его драйвер подключается к NDIS),и этого не происходит для пакетов, отправляемых из одного сокета на другой сокет на той же машине.

(Обратите внимание, что libpcap может отправлять пакеты в Linux и * BSDи Mac OS X и Solaris и Digital / Tru64 UNIX, например, и может делать это в течение нескольких лет, более старые версии libpcap не поддерживали его, но версии, доступные в течение последних нескольких лет, могут.согласно моему первому абзацу, не имеет смысла использовать libpcap для отправки и получения обычных пакетов UDP на этих ОС, так же как нет смысла использовать WinPcap для этой цели в Windows.)

...