不知道为什么在 C# 嗅探器中设置套接字选项时收到错误代码 10022(无效参数)

2023-12-19

我正在编写一个数据包嗅探器作为学习 C# .Net 4 套接字开发的练习。我的目标是嗅探进出我的计算机的 IP 数据包。

我的问题是,在调用 SetSocketOption 时收到错误代码 10022,参数无效。我看不出我哪里有无效的论点。我的计算机上有一些管理权限,但可能还不够。这是我的工作计算机,IT 部门非常严格。话虽如此,如果这是一个权限问题,我会期待一个不同的例外。

我不确定下一步应该做什么来调试这个问题。有人有主意吗?

代码如下:

public Sniffer()
{
    try
    {
        socket = new Socket(
            AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

        IPAddress[] ipAddresses = Dns.GetHostEntry(
            Dns.GetHostName()).AddressList;

        socket.Bind(new IPEndPoint(ipAddresses[0], 0));

        socket.SetSocketOption(
            SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);

        byte[] inputData = new byte[4] { 1, 0, 0, 0 };
        byte[] outValue = new byte[4];

        socket.IOControl(IOControlCode.ReceiveAll, inputData, outValue);
    }
    catch (SocketException ex)
    {
        string ErrorMessage = ex.Message;
    }
}

由于 2000 年代初期病毒的滥用,Microsoft 已限制在所有高于 XP SP2 的操作系统上的 Windows 操作系统的非服务器版本上使用原始套接字。

您可以从以下页面阅读有关哪些限制的更多信息TCP/IP 原始套接字 https://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx在 MSDN 上。

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

不知道为什么在 C# 嗅探器中设置套接字选项时收到错误代码 10022(无效参数) 的相关文章

  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map

随机推荐

  • 如何使用 font-face 缩小 CSS

    我有一个带有字体的样式表 当我使用在线服务缩小 CSS 时 字体停止工作 我采取的方法是提取 font face 代码 缩小 css 的其余部分 然后将 font face 粘贴到缩小后的样式表的顶部 好奇是否有人对此有更好的方法 我使用此
  • 如何在向前传递数据后将数据向后传递到视图控制器?

    我正在开发一个测验应用程序 并且在初始视图控制器之后出现第二个视图控制器 要求您回答问题 在第二个视图控制器上 用户必须按下按钮才能返回到初始视图控制器才能被问到另一个问题 然而 当我从第二个视图控制器返回时 我相信正在创建初始视图控制器的
  • appcelerator titan - 隐藏导航栏android

    是否可以在 Appcelerator Titanium 中永久隐藏 Android 底部导航 关于这个主题有很多问题 但没有很好的解决方案
  • 如何用numpy降序排序?

    我有一个像这样的 numpy 数组 A array 1 3 2 7 2 4 1 3 6 1 2 3 我想按降序对该矩阵的行进行排序 并获取排序矩阵的参数 如下所示 As array 3 1 2 0 1 3 0 2 0 3 2 1 我做了以下
  • Excel vba 重命名复选框

    我有一个包含许多复选框的工作表 Excel 自动将它们命名为 CheckBox1 CheckBox2 等 但是 对于我的文档 我需要将它们全部重命名为 Rij11 1 Rij11 2 等 Rij11 是第 11 行 1 是该行中的第一个复选
  • Java获取不带子字符串的文件扩展名

    我如何在Java中获得文件扩展名而不使用那个愚蠢的方法lastIndexOf etc apache Commons 库有FilenameUtils getExtension http commons apache org proper co
  • 如何计算wpf控件的总渲染时间?

    是否有任何探查器或工具可用于计算特定控件的 渲染时间 渲染时间 控件完全渲染到屏幕上所需的时间 我不知道有什么工具 但如果它只是一个控件 您可以创建一个子类 重写渲染方法并使用秒表来查找一些计时
  • As 公式中出现意外符号,无法找到

    我一直在使用as formula用于设置 glm 我不知道意外的符号在哪里 部分问题是我要转换的字符向量太长 大约有700字 插入两者之间 以便将其转换为公式 错误提示如下 Error in parse text x keep source
  • Webpack-Dev-Server 未显示最新的更改文件

    我正在尝试运行一个使用带有 HMR 和源映射的 webpack 开发服务器的项目 但遇到了问题 当我单独使用 webpack 和我的配置文件时 源映射会在控制台输出中指示 并且 HMR 可以进行页面刷新 但没有服务器 当我尝试使用 webp
  • 使用 Intellij IDE 运行 Scala Dotty 项目

    我使用 Dotty 模板创建了一个基本的 Scala Dotty 项目 并将该项目导入到 IntelliJ IDE 当我使用时一切正常sbt命令行 当我尝试在 IntelliJ IDE 中构建或运行它时 出现以下错误 Error scala
  • C 数组的指针算术

    我正在阅读 K R 中有关数组算术的部分 并发现了一些奇怪的东西 我发布了整个段落以了解上下文 但我主要关注粗体部分 如果 p 和 q 指向同一个数组的成员 则关系如 等都可以正常工作 例如 如果 p 点 则 p 有一个例外 可以使用数组末
  • 可解码嵌套数据,无需在 Swift 中创建额外的类

    我是 iOS 开发新手 很抱歉提前提出愚蠢的问题 我有这样的 json type post comments count 0 can post 1 likes count 0 user likes 0 can like 1 can publ
  • 指定在另一个文件中声明的全局变量的类型

    我如何告诉我的 IDE PHPStorm 某些全局变量不是 未声明 的 而是简单地在其他地方声明的 并有特定的类型 Magento 的一个例子 opcheckout js if response duplicateBillingInfo s
  • 在 Xcode Interface Builder 中 - 为什么编辑器--->排列菜单中的选项(包含“发送到前面”、“发送到后面”)经常被禁用?

    我想做的很简单 在子视图中的图像前面添加一个标签 但是 当选择我的标签时 所有排列选项都将被禁用 不可选择 我发现这种情况经常发生 我几乎不允许在排列菜单中更改对象的 z 轴 这可能是什么原因 避免此功能并以编程方式设置视图顺序是否是更好的
  • && 逻辑和 || 的 True 和 False逻辑表

    C 语言的真 假表 我听说过 C 语言中有一个表 true false for and or 是一种数学 他们说如果 true true true 且 false true false 我只是对此感到困惑 我尝试进行研究 但找不到任何表格
  • 如何使用 jquery 将自定义标头添加到 ASMX Web 服务调用?

    我有一个具有以下合同的网络服务 POST Service service asmx HTTP 1 1 Host xxx xxx xxx Content Type text xml charset utf 8 Content Length l
  • 此操作将取消挂起的刷新数据命令

    当我尝试此代码时 我收到错误 此操作将取消挂起的刷新数据命令 是否继续 ActiveWorkbook RefreshAll 即使我把Application Wait now TimeValue 00 01 20 Excel 未正确刷新 解决
  • 从 C# 中继承的类转换数据类型

    我试图了解我的统一项目的继承 但似乎发现我的设置存在限制 我在写这篇文章时感到很困惑 因为我仍在学习正确理解 C 我有一组继承的类 它们根据两种不同的行为进行划分 这样我就有了正确的引用 然后我需要对它们进行转换 以便我可以访问这些类之一中
  • Javascript 模块模式有什么好处?

    我一直在研究为我的团队提出标准化的 Javascript 编码风格 现在大多数资源推荐涉及闭包的 模块 模式 如下所示 var Module function someMethod function return someMethod so
  • 不知道为什么在 C# 嗅探器中设置套接字选项时收到错误代码 10022(无效参数)

    我正在编写一个数据包嗅探器作为学习 C Net 4 套接字开发的练习 我的目标是嗅探进出我的计算机的 IP 数据包 我的问题是 在调用 SetSocketOption 时收到错误代码 10022 参数无效 我看不出我哪里有无效的论点 我的计