使用WinPCap进行UDP接收 我希望在我的C++应用程序中使用WiPCAP库来实现“可靠”的UDP接收。我找到的所有示例,使用此库捕获并继续。是否有任何方法(例如)如何将PCap配置为流模式并仅在uder定义的端口上接收UDP,或者如何解决此问题。在这段时间里,我有可靠的UDP服务器能够接收0.5Gb/s。但在速度较慢的PC上,我有一个数据包丢失,我可以在ethereal中看到数据包,但在应用程序中看不到

使用WinPCap进行UDP接收 我希望在我的C++应用程序中使用WiPCAP库来实现“可靠”的UDP接收。我找到的所有示例,使用此库捕获并继续。是否有任何方法(例如)如何将PCap配置为流模式并仅在uder定义的端口上接收UDP,或者如何解决此问题。在这段时间里,我有可靠的UDP服务器能够接收0.5Gb/s。但在速度较慢的PC上,我有一个数据包丢失,我可以在ethereal中看到数据包,但在应用程序中看不到,udp,winpcap,Udp,Winpcap,谢谢 vsm我假设您已经尝试了所有更标准的方法来增加您能够处理的数据报的数量?比如增加recv缓冲区大小,加快每个数据报的处理速度,使用IOCP让更多线程来解决问题,或者如果可以针对Windows 8,则使用RIO 如果是这样的话,那么使用WinPCap可能会起作用,但这听起来是一个有点极端的解决方案 您需要做的是创建一个过滤器,以便只捕获您感兴趣的数据报。。。这些文档包括使用过滤器的示例。我在这里有一个服务器:。这段代码与IOCP一起工作。它在WIndows XP上运行良好。接收0.5Gb/s

谢谢


vsm

我假设您已经尝试了所有更标准的方法来增加您能够处理的数据报的数量?比如增加recv缓冲区大小,加快每个数据报的处理速度,使用IOCP让更多线程来解决问题,或者如果可以针对Windows 8,则使用RIO

如果是这样的话,那么使用WinPCap可能会起作用,但这听起来是一个有点极端的解决方案

您需要做的是创建一个过滤器,以便只捕获您感兴趣的数据报。。。这些文档包括使用过滤器的示例。

我在这里有一个服务器:。这段代码与IOCP一起工作。它在WIndows XP上运行良好。接收0.5Gb/s没有问题。但是现在Win7有点不可靠。有时会出现数据包位置错误。(我的设备生成udp数据包,并且在其有效负载中有PacketNumber-数字随着每个数据包的增加而增加。发生错误时,我将所有数据包编号写入文件。我可以查看exmaple:10,11290,13,14…)。WinXP和Win7在IOCP和多线程方面是否存在已知的差异?或者你知道有任何免费的带有IOCP处理的UDP服务器吗


在procedding循环中,我只将数据包添加到缓冲区并检查它们的编号。

为什么?使用Sockets API要简单得多,WinPCap并没有使它更可靠。我从以下位置获得了IOCP UDP服务器:。