如何监听任意端口的广播包?

2024-04-07

使用.NET,如何在任何端口上侦听发送到.255的udp广播数据包,而不需要绑定到特定端口?


我自己找到了办法。它是这样工作的:

mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 0));
mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);                           

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

// Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant of Winsock 2
    byTrue,
    byOut);

//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData,0,byteData.Length,SocketFlags.None,new AsyncCallback(OnReceive),null);

在异步处理程序中,我执行 mainSocket.EndReceive(...),解析数据并根据需要启动新的 BeginReceive(从多线程接收器外部控制)。

奇迹般有效。致谢 Hitesh Sharma (http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx)

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

如何监听任意端口的广播包? 的相关文章

  • 如何提取括号(圆括号)之间的文本?

    我有一根绳子User name sales 我想提取括号之间的文本 我该怎么做 我怀疑子字符串 但我无法弄清楚如何阅读 直到右括号 文本的长度会有所不同 如果您希望远离正则表达式 我能想到的最简单的方法是 string input User
  • 设置 TextBlock 以保留开头和结尾的空白?

    EDIT 下面的代码实际上按照我想要的方式工作 这个问题有点误导 请忽略它 通常当我设置Text的财产TextBlock像这样 TextBlock tb new TextBlock tb Text Hello World 文本开头和结尾的空
  • WCF - 如何增加消息大小配额

    我有一个 WCF 服务 它将 1000 条记录从数据库返回给客户端 我有一个 ASP NET WCF 客户端 我在 asp net Web 应用程序项目中添加了服务引用来使用 WCF 当我运行客户端应用程序时 我收到以下消息 传入消息的最大
  • .Net Core appsettings.json 最佳实践 - 覆盖开发设置(或反之亦然)?

    寻找一种关于在 Net Core 中构造 appsettings json 文件的合理方法 是否应该将基本 appsettings json 文件配置为在开发环境中运行 然后基于环境的覆盖 例如 appsettings Production
  • 如何将动态数据写入 MVC 3 Razor 中的页面布局?

    我有带有 Razor 引擎的 MVC 3 C 项目 将动态数据写入 Layout cshtml 的方法和最佳实践是什么 例如 也许我想在网站的右上角显示用户名 该名称来自会话 数据库或基于用户登录的任何内容 更新 我也在寻找将某些数据渲染到
  • C# 中输入按键

    我尝试了这段代码 private void textBox1 KeyPress object sender KeyPressEventArgs e if Convert ToInt32 e KeyChar 13 MessageBox Sho
  • C# 事务中的事务

    我正在使用 C 将发票的平面文件导入到数据库中 如果遇到问题 我将使用 TransactionScope 回滚整个操作 这是一个棘手的输入文件 因为一行不一定等于一条记录 它还包括链接记录 发票将包含标题行 行项目和总计行 有些发票需要跳过
  • 创建仅包含枚举的 COM 库时出现问题

    我正在做一个 COM 互操作项目 用 C 和 NET Interop 替代一些 VB 和 C ATL COM 项目 当我在 NET 中定义枚举并将它们设为 ComVisible 时 它 们会公开为 Typelib EnumType Enum
  • 未指定authenticationScheme,并且没有使用默认身份验证和自定义授权找到DefaultChallengeScheme

    我有一个 NET Core 2 0 应用程序 并且遇到授权问题 我想针对特殊请求使用自定义授权 标头和标准默认身份验证 首先 我在中添加配置Startup cs public IServiceProvider ConfigureServic
  • 您使用的 ORM 框架的最佳功能是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • c#.net 中委托事件的超级简单示例? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个非常简单的例子来了解自己对这些事件的了解 我觉得很难理解互联网或书籍上提供的示例 这是公开事
  • 当应用程序终止时,我可以安全地依赖 Threads 中的 IsBackground 吗?

    我正在 GUI 中运行一些后台线程 目前 我正在实现个人线程取消代码 但线程中有 IsBackground 属性 根据 MSDN 它们会自行取消 我知道它将进入 Thread Abort 这很令人讨厌 但是在这个后台线程中没有任何事情需要我
  • 为什么在按下 Tab 键之前​​不显示焦点矩形?

    我有一个奇怪的问题 可能只是为了理解 为什么在测试应用程序中 直到我按 Tab 键才显示焦点矩形 我想显示一个带有两个单选框和两个按钮的对话框 当我显示对话框时 我希望在第一个单选按钮周围看到一个焦点矩形 以便用户可以看到焦点在哪里 我对控
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • 为什么 Azure Key Vault 安全?

    Azure Key Vault 为什么或如何安全 我需要在服务器上存储密钥 URI 客户端 ID 和客户端密钥 因此如果任何人授予对托管应用程序的服务器的访问权限 他将能够访问存储在 Key Vault 中的密钥和密钥 这意味着将它们存储在
  • 如何将现有对象实例包装到 DispatchProxy 中?

    我在找RealProxy NET Core 中的替换 以及这个issue https github com dotnet corefx issues 4091将我转发至DispatchProxy https www nuget org pa
  • List、IList、IEnumerable、IQueryable、ICollection,哪个返回类型最灵活?

    我之前已经在这里看到过这个问题 但我不满意我理解的完整后果 问题是使用 linq to sql 返回的数据层应该使用什么返回类型以获得最大的灵活性和查询能力 这是我读过 发现的 IEnumerable 是有限的 只允许向前读操作 IEnum
  • 在VB.NET中获取文件修改日期

    我的文件夹中有许多文件 我需要获取最后修改日期 所以我用了 FDate IO File GetLastWriteTime FName 对于某些文件 它工作正常 但对于其他文件 我得到的日期为 1 1 1601 但是当我在 Windows 资
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • Control.Invoke 是否泵送消息?

    Control Invoke 在被阻塞时是否继续在调用它的线程中泵送消息 系统 Windows 窗体 不会 Invoke 是阻塞的 整个线程将阻塞 直到对 Invoke 的调用返回 还有开始调用 http msdn microsoft co

随机推荐