Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22382|Odpoveď: 7

[WinForm] 【High Speed】C# IP address segment port multi-threaded scanner

[Kopírovať odkaz]
Zverejnené 11. 12. 2015 15:17:37 | | | |

V posledných rokoch sa v práci často používajú RFID čítačky, inteligentné domáce brány, snímače teploty a vlhkosti, zvyčajne existujú sériové a sieťové porty, z dôvodu prevádzky na mieste sú sériové porty menej využívané, väčšina z nich používa sieťové porty. Spôsob pripojenia je IP adresa a port, niektoré zariadenia majú vyhľadávací softvér, iné nie. Časté používanie testovacieho prostredia a stránky je nevyhnutne mätúce. Nedávny RFID čítač používa ZN-100 Ethernet port-to-serial port modul a vyhľadávací softvér (ZNetCom Utility) je dobrý a rýchlosť vyhľadávania je tiež veľmi rýchla. (Ako je uvedené nižšie)

Premýšľal som, že by som si ho vyvinul sám, predovšetkým IP segment a port sa dajú prispôsobiť, čo je jednoduché na používanie; Rýchlosť vyhľadávania musí byť rýchla a ja sa ponáhľam používať multithreading a asynchrónny systém. Najprv sa odfoťme.



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

Zdrojový kód prispieva: IP端口扫描.rar (31.73 KB, Počet stiahnutí: 12)






Predchádzajúci:Ktoré protokoly sú založené na TCP a ktoré na UDP?
Budúci:Void Pointer Basic
Zverejnené 11. 12. 2015 15:51:53 |
Zverejnené 11. 12. 2015 18:00:48 |
Okamžitý:Príspevok bol zablokovaný administrátorom alebo moderátorom
Zverejnené 22. 5. 2016 15:13:38 |
Je to veľmi dobré
Zverejnené 20. 8. 2016 16:35:02 |
Ukazuje sa, že softvér vlastníka na skenovanie proxy je tiež vylepšený s odkazom na tento zdrojový kód. Ďakujem!
Zverejnené 21. 8. 2016 13:11:18 |
Prečo to nemôže fungovať?
 Prenajímateľ| Zverejnené 3. 12. 2025 11:58:07 |
Test pripojenia TCP portu



 Prenajímateľ| Zverejnené 3. 12. 2025 11:58:49 |
.NET/C# kontroluje, či je k dispozícii TCP port
https://www.itsvse.com/thread-10721-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com