Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 22382|Risposta: 7

[WinForm] 【Scansione multithread a segmento di indirizzo IP ad alta velocità】C#

[Copiato link]
Pubblicato su 11/12/2015 15:17:37 | | | |

Negli ultimi anni, lettori RFID, gateway smart home, sensori di temperatura e umidità sono spesso utilizzati sul lavoro; generalmente ci sono porte seriali e porte di rete; per motivi onsite, le porte seriali sono generalmente meno utilizzate, la maggior parte di esse utilizza porte di rete. Il metodo di connessione è indirizzo IP e porta, alcuni dispositivi hanno software di ricerca, altri no. L'uso frequente dell'ambiente di test e del sito è inevitabilmente confuso. Un recente lettore RFID utilizza un modulo porta Ethernet ZN-100 da porta a porta seriale, e il software di ricerca (ZNetCom Utility) è buono e la velocità di ricerca è anch'essa molto elevata. (Come mostrato sotto)

Ho pensato di svilupparne uno da solo, prima di tutto, il segmento IP e la porta possono essere personalizzati, il che è facile da usare; La velocità di ricerca deve essere veloce, e ho fretta di usare il multithreading e l'asincrono. Facciamo prima una foto.



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

Il codice sorgente contribuisce a: IP端口扫描.rar (31.73 KB, Numero di download: 12)






Precedente:Quali protocolli sono basati su TCP e quali su UDP?
Prossimo:Puntatore Vuoto Base
Pubblicato su 11/12/2015 15:51:53 |
Pubblicato su 11/12/2015 18:00:48 |
Sollecito:Il post è stato bloccato da un amministratore o moderatore
Pubblicato su 22/05/2016 15:13:38 |
È molto buono
Pubblicato su 20/08/2016 16:35:02 |
Si scopre che anche il software proxy di scansione del proprietario è migliorato rispetto a questo codice sorgente. Grazie!
Pubblicato su 21/08/2016 13:11:18 |
Perché non può funzionare?
 Padrone di casa| Pubblicato su 03/12/2025 11:58:07 |
Test di connettività della porta TCP



 Padrone di casa| Pubblicato su 03/12/2025 11:58:49 |
.NET/C# verifica se è disponibile una porta TCP
https://www.itsvse.com/thread-10721-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com