架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 22425|回复: 7

[WinForm] 【高速】C# IP地址段端口多线程扫描器

[复制链接]
发表于 2015-12-11 15:17:37 | 显示全部楼层 |阅读模式

近几年工作经常使用RFID识读器,智能家居网关,温湿度传感器,一般是有串口和网口,由于现场原因一般较少使用串口,大多使用网口。连接方法是IP地址和端口,有的设备带搜索软件,有的就不带。经常测试环境和现场来回用,难免记混。最近使用的一款RFID识读器使用的ZN-100以太网口转串口模块,自带的搜索软件(ZNetCom Utility)就不错,搜索速度也很快。(如下图)

1AR24926-0.jpg

就想着自己也开发一个,首先IP段和端口能够自定义,方便使用;搜索速度一定要快,我急性子要不等不急,这就要使用多线程和异步。先上图。

1AR23L4-1.jpg


1AR22146-2.jpg


  1. #region 扫描方法

  2.         public void Scan(string m_host, int m_port)
  3.         {
  4.             //我们直接使用比较高级的TcpClient类
  5.             TcpClient tc = new TcpClient();
  6.             //设置超时时间
  7.             tc.SendTimeout = tc.ReceiveTimeout = 2000;

  8.             try
  9.             {
  10.                 //同步方法
  11.                   //IPAddress ip = IPAddress.Parse(host);
  12.                 //IPEndPoint IPendp = new IPEndPoint(ip, port);
  13.                 //tc.Connect(IPendp);

  14.                 //异步方法
  15.                 IAsyncResult oAsyncResult = tc.BeginConnect(m_host, m_port, null, null);
  16.                 oAsyncResult.AsyncWaitHandle.WaitOne(1000, true);//1000为超时时间

  17.                 if (tc.Connected)
  18.                 {
  19.                     //如果连接上,证明此端口为开放状态
  20.                        UpdateListBox(listBox1, m_host + ":" + m_port.ToString());
  21.                 }
  22.             }
  23.             catch (System.Net.Sockets.SocketException e)
  24.             {
  25.                 //容错处理
  26.                 //MessageBox.Show("Port {0} is closed", host.ToString());
  27.                 //Console.WriteLine(e.Message);
  28.             }
  29.             finally
  30.             {              
  31.                 tc.Close();
  32.                 tc = null;               
  33.                 scannedCount++;
  34.                 runningThreadCount--;

  35.             }
  36.         }
  37.         #endregion
  38. 如果使用同步方法会有明显的卡顿,用户体验不好;使用异步感觉很流畅,很爽,自己可以注释代码亲测。
复制代码

源码献上: IP端口扫描.rar (31.73 KB, 下载次数: 12)






上一篇:哪些协议是基于TCP,哪些协议是基于UDP的啊?
下一篇:void指针的基本
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2015-12-11 15:51:53 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2015-12-11 18:00:48 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2016-5-22 15:13:38 | 显示全部楼层
好挺不错的
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2016-8-20 16:35:02 | 显示全部楼层
原来楼主的扫代理软件也是参照这个源码改进的呀。谢谢!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2016-8-21 13:11:18 | 显示全部楼层
这个怎么运行不起来呢?
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2025-12-3 11:58:07 | 显示全部楼层
TCP 端口连通性测试



码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2025-12-3 11:58:49 | 显示全部楼层
.NET/C# 检查 TCP 端口是否可用
https://www.itsvse.com/thread-10721-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-12-17 05:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表