为什么 IAsyncResult 报告所有端口都已打开?

2023-12-01

我有这个方法在线程中运行,但是当我测试它时,它报告所有端口都打开。看来该方法:var result = client.BeginConnect(host, port, null, null);传递结果时效果不佳var success = result.AsyncWaitHandle.WaitOne(tcpTimeout); ...

知道如何解决吗?

我努力了client.ConnectAsync(host,port).Wait(TcpTimeout);但这也没有按预期工作......

    public void start()
    {
        Thread thread1 = new Thread(new ThreadStart(RunScanTcp));
        thread1.IsBackground = true;
        thread1.Name = "THREAD ME EMER : " + i;
        thread1.Priority = System.Threading.ThreadPriority.Highest;
        thread1.Start();
   }


public void RunScanTcp()
{
        while (((port = portList.NextPort()) != -1) && (nderprit != true))
        {
            TcpClient client = new TcpClient();
            count = port;
            tcp_count = tcp_count + 1;
            Thread.Sleep(10);
            try
            {
                var mre = new ManualResetEvent(false);
                Console.WriteLine("Current port count : " + port);
                var result = client.BeginConnect(host, port, null, null);
                var success = result.AsyncWaitHandle.WaitOne(tcpTimeout);
                if (success)
                {
                    Console.WriteLine("PORT IS OPEN : " + port);
                    received_tcp = received_tcp + 1;
                    Activity.RunOnUiThread(() =>
                    {

                        mre.Set();
                    });
                    mre.WaitOne();
                    client.Close();
                }
                else
                {
                    client.Close();
                }
            }
            catch (Exception)
            {
                client.Close();
            }
        }
}

执行时根据非异常判断端口是否打开EndConnect.

串口扫描示例:

注意:如果您希望同时扫描多个端口(4 的并发性效果很好并且不会压垮 Android 网络堆栈),请使用一些 Linq 将端口列表分成组并执行 Parallel.ForEach。

bool portOpen;
for (int portNo = 1; portNo < (fasttScan ? 1025 : 65537); portNo++)
{
    TcpClient client = new TcpClient
    {
        SendTimeout = (fasttScan ? 2 : 10),
        ReceiveTimeout = (fasttScan ? 2 : 10)
    };
    var tcpClientASyncResult = client.BeginConnect(ipAddress, portNo, asyncResult =>
    {
        portOpen = false;
        try
        {
            client.EndConnect(asyncResult);
            portOpen = true;
        }
        catch (SocketException)
        {
        }
        catch (NullReferenceException)
        {
        }
        catch (ObjectDisposedException)
        {
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message); // ? unknown socket failure ?
        }
        if (portOpen)
            Console.WriteLine($"{ipAddress}:{portNo}:{portOpen}");
        client.Dispose();
        client = null;
    }, null);
    tcpClientASyncResult.AsyncWaitHandle.WaitOne();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 IAsyncResult 报告所有端口都已打开? 的相关文章

  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • 有关 ListView 自定义行布局项目上的 onClick() 事件的帮助

    我有一个 ListView 其行由我格式化 每行都有 ImageView 和 TextView 的混合 我还实现了自己的适配器 并且能够通过它绘制每一行 现在 我想要这样的东西 用户单击 ImageView 不是行上的其他任何位置 但只有此
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • Android:AsyncTask ProgressDialog 将不会在 ActivityGroup 中打开

    我试图在轮询我的服务器时打开一个进度对话框 该类是一个 ActivityGroup 因为它嵌套在选项卡栏中 为了将视图保持在框架内 需要 ActivityGroup 这是我的 ActivityGroup 类的声明 public class
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 如何使用 NumPy 查找 emirp 数字?

    我想找到数字反转的素数也是素数 包括回文素数 并且我也希望找到其他基数中具有这种性质的素数 而不仅仅是十进制 其数字反转也是素数的素数称为 emirp 有关它的更多信息位于此link 我已经实现了一个可以提供正确输出的解决方案 如下所示 我
  • CardLayout的卡片按随机顺序显示?

    我想要在 CardLayout 中以随机顺序显示卡片或屏幕 我需要有关如何实现这一目标的指导 我应该使用什么策略 我尝试使用下面的代码 但它是固定顺序的 我希望能够选择我喜欢的顺序 EDIT 抱歉 我所说的随机顺序并不是指洗牌 但是 很高兴
  • Cordova 推送插件:onNotificationGMC 未触发且无法获取 regID

    大家好 我正在开发一个 cordova 混合应用程序 需要 Android 和 iOS 的推送通知服务才能工作 所以我安装了 cordova 插件 推送插件 这是我的代码 document addEventListener devicere
  • 使用 sed 将一个单词替换为多行?

    我正在编写一个 bash 脚本 该脚本必须准备一封电子邮件以发送给用户 它聚合了一些数据 最终形成多行数据 对于存储在中的示例 DATA 现在 经过一些stfw之后 我发现了一些东西 比如sed ei s data DATA g mail
  • 将动态分配的内存返回给操作系统而不终止程序

    我正在开发一个使用大量但有限内存的程序 内存在不同线程的运行时分配和释放 但是 我注意到程序的内存使用量不会保持在指定的范围内 随着时间的推移它会增加 我编写了以下示例程序来检查内存是否被释放回操作系统 释放一半分配的内存来检查内存使用量是
  • Laravel 5.4:如何不在控制器中使用路由参数

    我正在开发一个多语言应用程序 并尝试制作一个中间件来将路由 locale 前缀传递到 URL 但现在我不需要在控制器中使用这个 locale 参数 例如 public function getPost App Post post retur
  • mips 中的排序数组(汇编)

    我正在使用 mips 进行课堂学习集会 我正在对数字数组进行排序 我认为我的方法工作正常 但有点麻烦 我不知道如何检查我是否完全排序 我使用了一种非常基本的排序方法 但这就是迄今为止我们所学到的全部内容 另外 我不知道如何输出数字来检查它是
  • Android Xamarin 后台服务 - 每 x 分钟获取 GPS 位置?

    我正在使用 Xamarin 开发一个应用程序 我需要一个后台服务来定期 例如每 15 分钟 获取用户的 GPS 位置 这个项目 https github com xamarin mobile samples tree master Back
  • 如何在 WordPress 上(仅)显示登录用户的评论

    我目前正在使用 WordPress 构建一个利基问答网站 用户可以登录并发布问题或登录并回答问题 问题当前存储为帖子 答案存储为评论 我希望问题解答者能够登录并在一页上查看他们的所有评论 答案 并带有原始帖子 问题 的链接 我可以轻松地以这
  • 最后针对所有目标链接库

    我在项目中添加了对 gperftools 的支持来分析 cpu 和内存 Gperftools 需要链接库 tcmalloclast对于每个二进制文件 有没有办法使用 cmake 将库附加到我的项目的每个二进制目标 而无需编辑每个CMakeL
  • iPhone SDK - 如果按下硬件按钮,如何禁用音量指示器视图?

    如果您按下音量增大 减小硬件按钮 是否有办法阻止显示音量指示器视图表单 仅演示应用程序需要它 因此该方法不需要是 App Store 安全的 它的工作原理是这样的 播放无声文件 将体积视图添加到主视图中 将视图发送到后面 e g NSStr
  • 符合协议的 id 与使用协议限定 id

    我正在经历使用 Objective C 编程Apple 提供的文档 我试图理解下面的段落 但到目前为止 还无法做到这一点 protocol XYZPieChartViewDataSource NSUInteger numberOfSegme
  • 在 C++ 中将文本文件的内容附加到另一个文件

    如何在 C 中打开一个文本文件并将其所有行附加到另一个文本文件中 我找到的主要解决方案是分别从文件读取到字符串 以及从字符串写入文件 这可以优雅地结合起来吗 并不总是假设这两个文件都存在 访问每个文件时应该有一个布尔返回 如果这已经偏离主题
  • 查看应用程序是否已安装

    我认为这个问题说明了一切 找出用户是否在手机上安装了 Facebook 或 Whatsapp 的最佳方法是什么 我是否必须检查一下包裹 或者最好的方法是什么 这是问题已得到解答here 您可以使用以下代码来检查包名称 com faceboo
  • Sass @extend base/default 而不扩展伪类?

    我知道我可以 extend foo hover 但是有没有办法 extend foobar 基本 默认属性而不扩展伪类的定义 如 hover active 等 例如 我如何更改以下内容以使 foobar 仅扩展 foo 的默认状态 foo
  • 如何验证外键条目是否存在?

    我里面有外键Customer table JoinColumn name DISCOUNT CODE referencedColumnName DISCOUNT CODE ManyToOne optional false private D
  • Swagger 因循环模型引用而崩溃

    我有一个 Net Core 2 2 OData API 我要为其实现 Swagger 文档 我一直在关注这个例子 https github com Microsoft aspnet api versioning tree master sa
  • javascript onmouseover 更改背景图像

    我需要用 JavaScript 创建简单的照片库 我的代码不起作用 function upDate previewPic document getElementById image style backgroundImage url pre
  • Spring Cloud APIGW、Spring Boot 和 OpenAPI 问题 - CORS 问题

    我正在使用 Spring Boot 和使用 Spring Cloud APIGW 的微服务堆栈 我正在使用此处提到的相同代码 https piotrminkowski com 2020 02 20 microservices api doc
  • 为什么 IAsyncResult 报告所有端口都已打开?

    我有这个方法在线程中运行 但是当我测试它时 它报告所有端口都打开 看来该方法 var result client BeginConnect host port null null 传递结果时效果不佳var success result As