套接字仅捕获传出数据包,而不捕获传入数据包

2023-11-21

我基于数据包嗅探器这个(经常引用的)示例项目。实现 HTTP 数据包后,我注意到我收到的唯一 HTTP 数据包是请求,我没有收到任何响应。

我查看了许多不同的来源,但由于使用的代码通常是相同的,我倾向于认为它可能是我自己的本地代码。

当我查看日志时,我发现每个数据包都有我的本地 IPSourceIP,对于 HTTP 数据包以及到达其他端口的数据包。

我已经提供了一个工作样本here您可以将其复制粘贴到 LINQPad 中,并应该演示问题(添加System.Net and System.Net.Socket组件)。不要忘记以管理员身份执行 LINQPad 才能访问套接字。

这会导致 192.168.0 范围内出现数百/数千个条目,其中总共有 3 个引用我的托管提供商的 IP 地址例外(使用nslookup).

private readonly byte[] _data = new byte[4096];   
private Socket _mainSocket;

public void Capture()
{
    _mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
    _mainSocket.Bind(new IPEndPoint(GetLocalIP(), 0));

    var byTrue = new byte[] {1, 0, 0, 0};
    var byOut = new byte[] {1, 0, 0, 0};

    _mainSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut); 

    _mainSocket.EnableBroadcast = true;
    _mainSocket.BeginReceive(_data, 0, _data.Length, SocketFlags.None, OnReceive, null);
}

private void OnReceive(IAsyncResult ar)
{
    SocketError error;
    var received = _mainSocket.EndReceive(ar, out error);
    Parse(_data, received);
    _mainSocket.BeginReceive(_data, 0, _data.Length, SocketFlags.None, OnReceive, null);
}

private void Parse(byte[] data, int size)
{
     var packet = new IPHeader(data, size);
     Console.WriteLine (packet.SourceIP.ToString());
}
  • 视窗8.1
  • Killer e2200 Gigabit Ethernet Controller (NDIS 6.30) - Latest version of driver
    • 昨天安装了独立网卡,没有改变任何东西。

A post最接近我的问题的描述有我已经拥有的工作代码作为解决方案。

为什么我只能跟踪出站数据包?


您是否尝试检查您的操作系统/独立/路由器防火墙? 它经常被忽视,但防火墙对于传入和传出连接有不同的规则,这可能是导致问题的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

套接字仅捕获传出数据包,而不捕获传入数据包 的相关文章

  • 使用 CLion 进行 OpenCV Windows 设置

    我想在 Windows 上为 CLion IDE 设置 OpenCV 我尝试使用 OpenCV 3 1 和 2 4 得到相同的结果 我有 Windows 10 64 位 CLion 使用 cygwin 环境 到目前为止我做了什么 1 从Op
  • json.net自定义jobject反序列化

    我正在尝试使用 JsonConvert DeserializeObject string 将字符串反序列化为可与动态一起使用的 jobject 来动态访问 json 文档 但是我想避免知道文档的大小写 以便我可以输入 dynamic doc
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • C++ 中 void(*)() 和 void(&)() 之间的区别[重复]

    这个问题在这里已经有答案了 在此示例代码中 func1是类型void int double and funky是类型void int double include
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7

随机推荐

  • 如何处理 iOS 4.3 中的 MKReverseGeocoder / PBHTTPStatusCode=503 错误?

    自 iOS 4 3 GM Seed 10M2518 以来 我在使用时遇到崩溃MKReverseGeocoder reverseGeocoder didFailWithError 经常被调用并出现这样的错误 Error Domain NSUR
  • C++ 逻辑 & 运算符

    C 中有逻辑 运算符吗 例如一个与 一样工作的运算符 除了它还会评估后面的参数 即使前面的一些参数已经评估为 false 运算符 是我理解的按位与运算符 运算符 确实是按位运算符 我假设你有类似的东西 if f g do something
  • Java中如何用逗号和空格分割表达式?

    例如 源数据 some blabla sentence example 等待的结果 some blabla sentence example 我可以用逗号分隔 但不知道如何同时用逗号和空格分隔 到目前为止我的源代码 string split
  • 用于检查以 .jpg、.png 或 .gif 结尾的有效 URL 的正则表达式

    我希望用户提交一个有效且以 jpg png 或 gif 结尾的图像的 URL jpg gif png 这是官方 URI 解析正则表达式的 稍作修改 版本RFC 2396 它允许 fragments and querystrings出现在文件
  • Yii2 中的 authTimeout

    我正在尝试自动注销用户yii2当他闲置了固定的秒数后 在web php我添加了 user gt identityClass gt app models User enableAutoLogin gt true authTimeout gt
  • 会话“应用程序”:启动活动时出错

    Android Studio 2 0 更新后 gradle 构建完成后 我得到以下信息 会话 应用程序 启动活动时出错 它阻止应用程序启动 但它安装在我的模拟器中 这是 运行 选项卡中出现的内容 执行时出现意外错误 am start n c
  • 当相关类在编译和链接时存在并且在代码中显式存在时,运行时引发的 EClassNotFound 真正意味着什么?

    我在表单中的 rtl Streaming 中发生运行时错误 导致在执行 TReader ReadRootComponent 时引发异常 EClassNotFound 具体的错误消息是 找不到类 TActionList 奇怪的是 我的主窗体使
  • C++:如何在不使用库的情况下序列化/反序列化对象?

    我试图了解序列化 反序列化在 C 中如何在不使用库的情况下工作 我从简单的对象开始 但是当反序列化向量时 我发现 如果不先写入向量的大小 我就无法获取向量 此外 我不知道应该选择哪种文件格式 因为 如果数字存在于矢量大小之前 我将无法正确读
  • HttpClient PostAsJsonAsync 在 .NET Core 和 Classic .NET 中的行为不同

    我在 IIS 中托管一个经典 NET WebAPI 端点 它接受上传文档的 POST 请求 我创建了两个控制台应用程序 用于连接到 WebAPI 并上传文档 一个是经典的 NET v4 6 2 控制台应用程序 另一个是 NET Core 控
  • 如何修复缺少 JavaFX 运行时组件的问题?

    我在 Ubuntu 18 04 1 LTS 上安装了以下软件 openjdk version 10 0 2 2018 07 17 OpenJDK Runtime Environment build 10 0 2 13 Ubuntu 1ubu
  • GETDATE() 抛出异常

    我正在创建一个简单的应用程序 我正在使用MSAccess作为数据库 当我尝试使用下面的查询检索数据时 我收到异常未定义函数 GETDATE select from tempdata where dateissue between DATEA
  • ASP.NET 相当于此 cURL 命令

    我正在使用 Twilio API 它提供了 PHP 和 Ruby 示例 我正在开发一个网站 通过 ASP NET MVC 3 中编码的 API 发送文本消息 并利用我对 WebRequest 对象的有限知识 我能够翻译以下内容 curl X
  • 在带有 map() 的嵌套数据框中使用 filter() (和其他 dplyr 函数)

    我正在尝试使用map of purrr申请包filter 函数存储在嵌套数据框中的数据 为什么不先过滤 然后再筑巢呢 你可能会问 这会起作用 我将使用这样的过程展示我想要的结果 但我正在寻找方法来做到这一点purrr 我只想有一个数据框 其
  • 如何在 C# 中将西里尔字母字符串转换为英语

    是否可以在 C 中将西里尔字母字符串转换为英语 拉丁语 例如 我需要将 转换为 Petroleum 另外 我忘了提到 如果我有西里尔字符串 它需要保持这样 所以我可以以某种方式检查吗 我不熟悉西里尔字母 但如果它只是您想要的西里尔字母到拉丁
  • 了解不支持的操作异常

    我不太明白在哪里可以抛出这个异常 例如 我正在实施Future
  • ADO 组件 CommandTimeout

    我对 TADOQuery TADOCommand 或 TADODataSet 的查询执行超时设置有疑问 我已经对每一个都进行了尝试 我有一个小型应用程序 它连接到数据库并定期执行存储过程 该过程返回数据集作为结果 我的目标是保持此应用程序始
  • 如何从 Oracle SQL 中的 BLOB 获取文本内容

    我试图从 SQL 控制台查看 Oracle BLOB 内部的内容 我知道它包含相当大的文本正文 并且我只想查看文本 但以下查询仅表明该字段中有一个 BLOB select BLOB FIELD from TABLE WITH BLOB wh
  • React axios 错误:请求在 Firefox 中因删除请求而中止,但在 Chrome 中则不然

    我的删除请求在 Firefox 中无法正常工作 遇到了问题 仅给出的信息是 错误请求已中止 所有其他请求都工作正常 但在 Firefox 上 删除请求不起作用 我在 chrome 上测试过 效果很好 import React Compone
  • OS X 10.9 gcc 链接到 clang

    我刚刚注意到安装 OS X 10 9 后 g 编译器链接到 clang 编译器 有没有办法恢复到 gcc g 这种情况已经持续很长时间了 10 8 附带的 GCC 实际上是带有 LLVM 后端的 GCC 前端 获得 GCC 的最佳方式是通过
  • 套接字仅捕获传出数据包,而不捕获传入数据包

    我基于数据包嗅探器这个 经常引用的 示例项目 实现 HTTP 数据包后 我注意到我收到的唯一 HTTP 数据包是请求 我没有收到任何响应 我查看了许多不同的来源 但由于使用的代码通常是相同的 我倾向于认为它可能是我自己的本地代码 当我查看日