处理 Socket.ReceiveFrom 超时而不发送垃圾邮件控制台

2023-12-28

我正在编写一个 ServerLocator,它基本上广播一个端口来查找将使用 IPEndPoint 进行响应的服务器,并且如果在当前 IPHost 上找不到任何内容,我需要搜索能够超时,然后继续进行下一个。

现在我正在做这样的事情(我已经删除了这段代码的某些部分,因此它只包含显示我的问题所需的内容。这里还有一些客户端绑定)

string serverIp = string.Empty;
while(string.isNullOrEmpty(serverIp))
{   
    foreach (IPAddress adress in ipHosts.AddressList)
    {
        using(Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
        {
            try
            {
                client.ReceiveFrom(buffer, ref tempRemoteEP);

                //Get server IP
                serverIp = tempRemoteEP.ToString().Split(":".ToCharArray(), 2)[0];
                break;
            }
            catch(SocketException e)
            {
                // We expect connection attempt to time out if we cant find any server on this port and nic. Just continue with the next
                if (e.SocketErrorCode == SocketError.TimedOut)
                {
                    continue;
                }
            }
        }
    }
}

这按预期工作,除了控制台收到垃圾邮件:

System.dll 中发生“System.Net.Sockets.SocketException”类型的第一次机会异常

有没有一种好的方法可以处理这样的异常而不向控制台发送垃圾邮件?或者我可以用其他方式处理这个问题以避免超时异常吗?

Thanks.


如果程序继续运行的话,真的不需要担心这个,程序中会发送很多这样的异常。看本文 http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx有关“首次例外”的更多信息。

另请检查这个链接 http://www.unittesting.com/documentation/tips/BreakOnThrow.html查看如何配置 Visual Studio 来处理异常。如果您配置了这些,您可以在异常时中断(而不是继续)并查看到底发生了什么。但是,请注意,隐藏异常似乎在调试中不起作用,请参阅here https://stackoverflow.com/questions/1357096/how-can-i-hide-an-exception-type-from-the-output-window-in-visual-studio or here https://stackoverflow.com/questions/58380/avoiding-first-chance-exception-messages-when-the-exception-is-safely-handled但正如 @Cipi 指出的那样,它不应该在发布中可见。

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

处理 Socket.ReceiveFrom 超时而不发送垃圾邮件控制台 的相关文章

  • Mono C# 获取应用程序路径

    我正在寻找我的应用程序的目录 它似乎与常规 c 不同 As in Path GetDirectoryName Application ExecutablePath 不管用 一种正确的跨平台解决方案是 Path GetDirectoryNam
  • 在 Silverlight 中同步操作

    我有一个 Silverlight 应用程序 它使用操作从模型获取数据 再次从 WCF 服务获取数据 我需要以某种方式同步两个 ActionCallback 或等待它们 然后执行一些代码 Example model GetMyTypeList
  • System.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常

    我遇到了一个非常愚蠢的问题 我已经尝试完全重新安装 NET 但它没有解决问题 我什至无法通过谷歌搜索找到其他有同样问题的人 就在我的计算机上 如果我将 NumericUpDown 控件添加到 NET 项目中的窗体并运行该应用程序 则在运行该
  • 将 python 字典翻译为 C++

    我有包含以下代码的 python 代码 d d 0 0 0 d 1 2 1 d 2 1 2 d 2 3 3 d 3 2 4 for i j in d print d i j d j i 不幸的是 对于我的目的来说 循环遍历 python 中
  • 如何用单反斜杠替换双反斜杠

    我想用单反斜杠替换双反斜杠 Using string destinationFile System IO Path Combine msiDirectory fileName Replace gives C Hg temp LogFile
  • 调试器 StepInto 自动生成的代码和 JMC 问题

    我正在使用 MDBG 示例制作托管 NET 调试器 目前 我正在努力解决 StepInto 行为 而 StepOut 和 StepOver 似乎有效 实现Just My Code迈步我在呼唤SetJMCStatus在模块加载时 这工作得很好
  • 如何在 Mac OS X 中获取 aio 信号处理程序的用户数据

    我尝试在 Mac OS X 下使用 aio 函数进行异步文件 IO 但在将某种形式的用户数据输入信号处理程序时遇到问题 这是设置操作的代码 class aio context public aio context int fildes bo
  • 从 Web 浏览器控件读取 Javascript 变量

    我正在尝试读取从表单上的 WebBrowser 控件加载和调用的 Javascript 变量的值 Example index html 引用名为 test js 的 javascript 在 test js 上 创建并填充了几个变量 然后i
  • .NET 4.0 进程中的 clr.dll!LogHelp_TerminateOnAssert

    背景 我正在开发一个基于 WinForm 的 NET 4 0 桌面应用程序 该应用程序几乎没有线程和计时器 并对用户控件使用一些 GDI 处理 在我的开发过程中 我通常会查看 sysinternal 的 Process Explorer 以
  • 通过模板参数向类添加方法

    我希望在类中拥有一个模板参数特定函数 取消启用enable if 它的名称保持不变 参数类型有所不同 尽管这应该不相关 因为只有一个被初始化 enum class MyCases CASE1 CASE2 template
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • WebProxy 错误:需要代理身份验证

    我使用以下代码从互联网获取html数据 WebProxy p new WebProxy localproxyIP 8080 true p Credentials new NetworkCredential domain user passw
  • CLR 程序集不会在 64 位 SQL Server 2005 中加载

    我们在安装 SQL Server 2005 32 位 时使用带有一些用户定义函数的程序集 我们使用如下脚本将其部署到生产环境 CREATE ASSEMBLY Ourfunctions AUTHORIZATION dbo FROM 0x4D5
  • Caliburn.Micro 事件聚合器

    如果这是一个非常愚蠢的问题 请道歉 但我刚刚开始使用 caliburn micro 我正在努力获取 eventAggregator 似乎没有任何内容订阅 我不确定问题是出在视图模型还是引导程序上 这是视图模型 class MainWindo
  • 按下按钮时更改几何绘图画笔的颜色

    我创建了一个按钮模板 有一个图像和一个标签 图像的来源位于 ResourceDictionary Pictures 中 图片的来源是具有白色画笔颜色的 DrawingImage
  • 非静态类中的静态方法有什么意义?

    我无法理解以下代码的潜在错误 class myClass public void print string mess Console WriteLine mess class myOtherClass public static void
  • Outlook 插件:从选定的日历中获取元素

    我正在创建 Outlook 加载项 我想知道如何从选定的日历中获取元素 例如 我需要从名为 myCalendar 的日历中获取所有约会项目 现在 我可以从所有日历中获取所有约会项目 谢谢你 这些额外的日历作为主日历文件夹的子文件夹提供 所以
  • C++ 中的无符号双精度?

    为什么 C 不支持无符号双精度语法 因为典型的浮点格式不支持无符号数 例如 参见此 IEEE 754 格式列表 http en wikipedia org wiki IEEE 754 2008 Formats 添加通用硬件不支持的数字格式只
  • 编译Linux内核模块时出现错误:“CONFIG_X86_X32已启用,但没有binutils支持”和不需要的“n”字符

    我想得到Rasta Ring0 调试器 http rr0d droids corp org 在我的 x86 64 Linux 中编译的 0 3 版本 它是一个 Linux 内核模块 我已将 32 位内联汇编替换为 64 位汇编 如我的问题中
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k

随机推荐

  • (404 Not Found)加载http://localhost:4200/angular2-datatable/datatable

    我正在尝试使用以下方法制作一个可排序的表this https www npmjs com package angular2 datatable 我已按照说明进行操作 看来我已经安装了angular2 datatable datatable正
  • 智能卡读卡器命名

    我的系统中有两个读卡器 HID OMNIKEY 5321 每个读卡器执行不同的功能 读卡器 1 智能卡读卡器0 读卡器 2 智能卡读卡器1 在我的程序中设置了 智能卡读卡器0 动作 1 智能卡读卡器1 动作 2 但有时 无需重新启动 可能失
  • 如何将流 (FILE *) 与 stdout 关联?

    现在每个模块都在写入 stderr 因此我无法关闭单个模块的输出 有谁知道如何将流与标准输出关联起来 这样每个模块都会写入独立的流 这样我就可以将其关闭 例如 fprintf newStdout hello newStdout正在向屏幕写入
  • 如何修复 Vim 中的 Home 和 End?

    我在 gnome terminal 2 26 0 中使用 vim 虽然我 95 的时间使用 导航到 EOL 使用 0 导航到相反的位置 但时不时地我会点击 Home 或 结尾 当我使用 Home 时 当前行中的文本会向下移动 使当前行处于插
  • Vim 中的合成视图和分割视图处理

    最近 我开始使用 syntastic 因为它大大简化了开发 唯一真正困扰我的是它如何处理分裂视图 我也使用 NERDtree 插件 每当我在 vsplit 视图中打开另一个文件时 就会发生以下情况 NERDTree file file
  • Webpack:如何在客户端(浏览器)端注入 process.env 运行时,使构建独立于环境

    简短问题 我正在寻找某种方式告诉 Webpack 不要做任何事情process变量 就像任何其他全局变量一样对待 因此它引用客户端捆绑包中的 window process 如果不可能 那么有一种方法可以注入变量process env在客户端
  • 用户和团队之间的关联和迁移(rails)

    我有这个用户和团队模型 它具有以下关联 user rb class User lt ActiveRecord Base belongs to team team rb class Team lt ActiveRecord Base has
  • 如何在其内部使用 lambda 函数?

    我有这段代码 不知道我想要实现的目标是否可能 acceptor async accept connections back gt socket this const boost system error code ec connection
  • \xdef\@fontenc@load@list{\@fontenc@load@list Rmarkdown 中未定义的控制序列

    我尝试编写一个非常简单的 Rmarkdown 文件来呈现为 pdf 但出现错误未定义的控制序列 文件 title Untitled author author date 3 2 2020 output pdf document whatev
  • 串口不工作?

    我编写了一个程序 将数据发送到我的arduino 它检测发送的内容 然后根据按下的键打开正确的引脚 当在我的 Windows 计算机上使用 arduino 软件时 arduino 草图工作正常 我可以通过发送 W A S 或 D 来打开和关
  • 找不到 com.android.tools.build:gradle:7.3.1

    我第一次安装 Android Studio 2021 3 1 17 并继续导入我的 Eclipse ADT 项目 项目本身的导入似乎进展顺利 但我收到以下错误 Could not find com android tools build g
  • Angular/Ionic 2 - 什么是提供者以及“static getparameters()”的作用是什么?

    我正在学习 Angular 2 使用 Ionic 2 有两个概念无法与 Angular 1 联系起来 我有一堂课如下 import App Platform from ionic angular import RegisterPage fr
  • 错误:当前上下文中不存在名称“Name”

    我已经去编辑代码了 gt 这绝不是一件好事 该代码用于 MVC 中的文件上传器 问题是我一次上传两个文件 这意味着它们被插入到数据库中的单独行中 这是原始代码 public ActionResult Index ViewData Messa
  • 双 SIM 卡中的 getAllCellInfo

    有谁知道列表中的单元格索引是否从返回TelephonyManager getAllCellInfo 与SIM卡槽号有关吗 我正在使用 Android API 24 经过一番实验 似乎运行该方法updateCellInfo 如下所述 始终返回
  • 添加新参考后如何查看工具箱中的组件?

    在我的项目中 我添加了对 WPFToolkit 程序集的引用 重新启动 Visual Studio 但在 VS ToolBox 窗口中没有看到 WPFToolkit 组件 我做错了什么 Toolbox 不会自动拾取引用程序集中的组件 控件
  • 是否可以强制 JavaScript 在使用变量之前声明变量?

    如果在没有先声明的情况下使用变量 是否可以通过在 JavaScript 代码中使用某些指令来引发警告或错误 如果这是不可能的 是否有一些插件可以强制 Eclipse 或任何其他 IDE 检测未声明的变量 是的 可以使用以下方法来做到这一点严
  • php < 5.3 的 finfo() 替代方案

  • VBA - 打开Excel,查找和替换,删除行,另存为csv

    我正在尝试用VBA编写一个程序 以便我可以从SAS 一种统计编程软件 远程操作excel文件 我希望该程序能够完成以下任务 打开指定的excel文件 查找标题行中的所有空白并将其替换为空 例如 测试名称 变为 测试名称 如果行中的第一个单元
  • 如何统计语料库文档中的字数

    我想知道计算文档中字数的最佳方法 如果我有自己的 corp txt 语料库设置 并且我想知道 students trust ayre 在文件 corp txt 中出现的频率 我可以用什么 会是以下之一吗 full nltk Text myc
  • 处理 Socket.ReceiveFrom 超时而不发送垃圾邮件控制台

    我正在编写一个 ServerLocator 它基本上广播一个端口来查找将使用 IPEndPoint 进行响应的服务器 并且如果在当前 IPHost 上找不到任何内容 我需要搜索能够超时 然后继续进行下一个 现在我正在做这样的事情 我已经删除