Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 22382|Respuesta: 7

[WinForm] 【Escáner multihilo de segmento de dirección IP de alta velocidad】C#

[Copiar enlace]
Publicado en 11/12/2015 15:17:37 | | | |

En los últimos años, lectores RFID, gateways de hogar inteligente, sensores de temperatura y humedad se utilizan frecuentemente en el trabajo; generalmente hay puertos seriales y puertos de red; por razones en el lugar, los puertos seriales suelen usarse menos, la mayoría de ellos usan puertos de red. El método de conexión es dirección IP y puerto, algunos dispositivos tienen software de búsqueda, otros no. El uso frecuente del entorno de prueba y del sitio es inevitablemente confuso. Un lector RFID reciente utiliza un módulo de puerto a puerto serie Ethernet ZN-100, y el software de búsqueda (ZNetCom Utility) es bueno y la velocidad de búsqueda también es muy rápida. (Como se muestra más abajo)

Pensé en desarrollar uno yo mismo, primero, el segmento IP y el puerto se pueden personalizar, lo cual es fácil de usar; La velocidad de búsqueda debe ser rápida, y tengo prisa por usar multihilo y asincrónico. Vamos a hacer una foto primero.



  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. 如果使用同步方法会有明显的卡顿,用户体验不好;使用异步感觉很流畅,很爽,自己可以注释代码亲测。
Copiar código

El código fuente aporta: IP端口扫描.rar (31.73 KB, Número de descargas: 12)






Anterior:¿Qué protocolos están basados en TCP y cuáles en UDP?
Próximo:Puntero vacío básico
Publicado en 11/12/2015 15:51:53 |
Publicado en 11/12/2015 18:00:48 |
Pronto:La publicación fue bloqueada por un administrador o moderador
Publicado en 22/5/2016 15:13:38 |
Está muy bien
Publicado en 20/8/2016 16:35:02 |
Resulta que el software proxy de escaneo del propietario también ha mejorado en referencia a este código fuente. ¡Gracias!
Publicado en 21/8/2016 13:11:18 |
¿Por qué esto no puede funcionar?
 Propietario| Publicado en 3/12/2025 11:58:07 |
Prueba de conectividad de puertos TCP



 Propietario| Publicado en 3/12/2025 11:58:49 |
.NET/C# comprueba si hay un puerto TCP disponible
https://www.itsvse.com/thread-10721-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com