Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 22382|Odgovoriti: 7

[WinForm] 【High Speed】C# IP naslovni segment port večnitni skener

[Kopiraj povezavo]
Objavljeno na 11. 12. 2015 15:17:37 | | | |

V zadnjih letih se pogosto uporabljajo RFID bralniki, pametni domači prehodi, temperaturni in vlažni senzorji, običajno so serijski in omrežni priključki, zaradi razlogov na lokaciji pa so serijski priključki običajno manj uporabljeni, večina uporablja omrežne priključke. Način povezave je IP naslov in priključek, nekatere naprave imajo iskalno programsko opremo, druge ne. Pogosta uporaba testnega okolja in spletne strani je neizogibno zmedena. Novejši RFID bralnik uporablja ZN-100 Ethernet modul med priključki in serijskimi priključki, iskalna programska oprema (ZNetCom Utility) je dobra, hitrost iskanja pa je prav tako zelo hitra. (Kot je prikazano spodaj)

Razmišljal sem, da bi ga razvil sam, najprej je IP segment in port mogoče prilagoditi, kar je enostavno za uporabo; Hitrost iskanja mora biti hitra, zato se mi mudi uporaba večnitnosti in asinhronega sistema. Najprej se slikajmo.



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

Izvorna koda prispeva: IP端口扫描.rar (31.73 KB, Število prenosov: 12)






Prejšnji:Kateri protokoli temeljijo na TCP in kateri na UDP?
Naslednji:Void Pointer Basic
Objavljeno na 11. 12. 2015 15:51:53 |
Objavljeno na 11. 12. 2015 18:00:48 |
Uren:Objavo je blokiral administrator ali moderator
Objavljeno na 22. 05. 2016 15:13:38 |
Zelo dobro je
Objavljeno na 20. 08. 2016 16:35:02 |
Izkazalo se je, da je lastnikova programska oprema za skeniranje prav tako izboljšana glede na to izvorno kodo. Hvala!
Objavljeno na 21. 08. 2016 13:11:18 |
Zakaj to ne more delovati?
 Najemodajalec| Objavljeno na 3. 12. 2025 11:58:07 |
Test povezljivosti TCP priključkov



 Najemodajalec| Objavljeno na 3. 12. 2025 11:58:49 |
.NET/C# preverja, ali je na voljo TCP port
https://www.itsvse.com/thread-10721-1-1.html
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com