Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 22382|Răspunde: 7

[WinForm] 【Scanner multi-threaded cu segment de adresă IP de mare viteză】C#

[Copiază linkul]
Postat pe 11.12.2015 15:17:37 | | | |

În ultimii ani, cititoare RFID, gateway-uri pentru case inteligente, senzori de temperatură și umiditate sunt adesea folosiți la locul de muncă; în general, există porturi seriale și porturi de rețea, din motive on-site, porturile seriale sunt în general mai puțin folosite, majoritatea utilizând porturi de rețea. Metoda de conexiune este adresa IP și portul, unele dispozitive au software de căutare, altele nu. Utilizarea frecventă a mediului de testare și a site-ului este inevitabil confuză. Un cititor RFID recent folosește un modul port-port-serial Ethernet ZN-100, iar software-ul de căutare (ZNetCom Utility) este bun, iar viteza de căutare este, de asemenea, foarte mare. (Așa cum se arată mai jos)

M-am gândit să dezvolt unul eu însumi, în primul rând, segmentul IP și portul pot fi personalizate, ceea ce este ușor de folosit; Viteza căutării trebuie să fie rapidă și mă grăbesc să folosesc multithreading și asincron. Hai să facem o poză mai întâi.



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

Codul sursă contribuie: IP端口扫描.rar (31.73 KB, Numărul de descărcări: 12)






Precedent:Care protocoale sunt bazate pe TCP și care pe UDP?
Următor:Pointer Void Basic
Postat pe 11.12.2015 15:51:53 |
Postat pe 11.12.2015 18:00:48 |
Prompt:Postarea a fost blocată de un administrator sau moderator
Postat pe 22.05.2016 15:13:38 |
E foarte bună
Postat pe 20.08.2016 16:35:02 |
Se pare că software-ul proxy de scanare al proprietarului a fost, de asemenea, îmbunătățit în legătură cu acest cod sursă. Vă mulțumesc!
Postat pe 21.08.2016 13:11:18 |
De ce nu poate funcționa asta?
 Proprietarul| Postat pe 03.12.2025 11:58:07 |
Testul conectivității porturilor TCP



 Proprietarul| Postat pe 03.12.2025 11:58:49 |
.NET/C# verifică dacă un port TCP este disponibil
https://www.itsvse.com/thread-10721-1-1.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com