c++ - WinDivert 问题

标签 c++ c network-programming

我对 WinDivert 有疑问. DivertSend 不起作用,GetLastError() 返回 1237?

我还有一个问题。我想根据 IP 列表转移流量,我有一个包含 20000 多条记录的 CSV 文件,每条记录都包含一个 IP 范围,问题是我只能用我的 CSV 文件的 500 条记录作为过滤字符串来调用 DivertOpen。如果我使用超过 500 条记录作为过滤器调用 DivertOpen,我会收到“过滤器语法错误”。我该如何解决这个问题。 谢谢

最佳答案

WinDivert 并非设计用于处理长/复杂的过滤器字符串(例如 20,000 个 IP 地址的列表)。 WinDivert documentation中简要提到了这一点: 即,理想情况下,过滤器字符串应该既选择性,并且越短/选择性越好。

对于您的应用程序,短字符串是不可能的,您最好捕获所有 网络流量(例如调用 DivertOpen("true", ... )) 并使用一些有效的方法(例如二进制搜索)在用户模式应用程序中进行过滤。只需重新注入(inject)不匹配的数据包即可。

PS:感谢您报告 1237 错误问题。

关于c++ - WinDivert 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760800/

相关文章:

c++ - 重载 "Shader"类中的赋值运算符

c++ - vector 的排序

c - X11 等待并获取剪贴板文本

c - C程序语法错误

c - 模拟输入引脚 PA8、PA11 和 PA12 在 STM32F103RB 上不工作

计算接收/发送数据的时间以计算带宽

iphone - 为什么 Objective-C 将 JSON 值转换为 ASCII 字符代码的散列?

c++ - 将 uint64_t 转换为 time_point

c++ - 如何在我的项目中链接 re2 库,就像使用 cmake 的静态库一样

java - BufferedReader.readLine() 方法阻塞替代方案