pcap - 在同一台计算机上流式传输和接收udp

时间:2011-10-07 12:55:47

标签: network-programming udp pcap winpcap

为了解释我想要得到什么,这是一个例子。 比方说,我们有一台带有一个NIC的PC。它具有单个IP地址172.16.0.1。 使用VLC,我们启动一个udp流到172.16.0.1:1234,然后启动另一个VLC副本并连接到udp://@172.16.0.1:1234。现在我们将看到我们的视频流。

如果您运行嗅探器,您将在环回时看到从172.16.0.1:some_random_port到172.16.0.1:1234的数据包。我们的网卡没有交通工具。

我想要做的是在同一台计算机上流式传输和接收udp,就像VLC一样。但主要问题是pcap只能pcap_open()一个真正的设备,它不能用于环回。

有可能解决这个问题吗?

P.S。我使用Windows和WinPcap,与Linux版本不同,它可以发送数据包。

1 个答案:

答案 0 :(得分:0)

如果您只想发送和接收UDP数据包,我建议您只使用常规的Winsock套接字,就像在UN * X上使用常规套接字一样;使用WinPcap要求您重新实现IP和UDP,将不允许您发送到Windows下同一台机器上的另一个套接字(或至少某些版本的UN * X)。

如果您想观看您正在发送的流量,不幸的是WinPcap无法提供帮助,因为它依赖于从NDIS发送和接收的数据包(其驱动程序插入NDIS),以及对于从机器上的一个套接字发送到同一台机器上的另一个套接字的数据包不会发生这种情况。

(注意,BTW,例如,libpcap 可以在Linux和* BSD以及Mac OS X和Solaris以及Digital / Tru64 UNIX上发送数据包,并且已经能够这样做了好几年;旧版本的libpcap不支持它,但过去几年可用的版本可以。但是,根据我的第一段,使用libpcap在这些操作系统上发送和接收常规UDP数据包是没有意义的,只是因为在Windows上使用WinPcap是没有意义的。)