2011-10-07 51 views
1

爲了解釋我想得到的內容,下面是一個示例。假設我們有一臺帶有一個網卡的PC。它具有單個IP地址172.16.0.1。 使用VLC,我們啓動一個udp流到172.16.0.1:1234,然後啓動另一個VLC副本並連接到udp://@172.16.0.1:1234。現在我們將看到我們的視頻流。pcap - 在同一臺計算機上流式傳輸和接收udp

如果您運行嗅探器,您將在環回上看到172.16.0.1:some_random_port到172.16.0.1:1234的數據包。我們的網卡上沒有任何交通。

我想要做的就是在同一臺計算機上進行流式處理和接收udp,就像VLC一樣。但主要的問題是pcap只能使用pcap_open()一個真實的設備,它不能使用loopback。

有沒有可能解決這個問題?

P.S.我使用Windows和WinPcap,不像Linux版本,它可以發送數據包。

+0

目前還不清楚,你想達到什麼目的。在同一臺PC上用winpcap從VLC接收UDP流? – pmod

回答

0

如果你只是想發送和接收UDP數據包,我會建議只使用常規的Winsock套接字,就像你在UN * X上使用常規套接字一樣;使用WinPcap要求您重新實現IP和UDP,不會讓您發送到Windows下的同一臺計算機上的另一個套接字(或至少在某些版本的UN * X上)。

如果你想手錶要發送,可惜的WinPcap不會幫助,因爲它依賴於數據包發送出去,並從NDIS接收(其驅動器插入NDIS)的流量,而且不發生從機器上的一個套接字發送到同一機器上的另一個套接字的數據包。例如,在Linux和* BSD和Mac OS X以及Solaris和Digital/Tru64 UNIX上發送數據包,並且已經能夠這樣做多年;舊版本的libpcap不支持它,但是可以使用過去幾年的版本,但是,按照我的第一段,使用libpcap在這些操作系統上發送和接收常規UDP數據包是沒有意義的,就像它沒有感覺在Windows上爲此使用WinPcap。)

相關問題