Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 22382|Antwoord: 7

[WinForm] 【High Speed】C# IP-adressegmentpoort multithreaded scanner

[Link kopiëren]
Geplaatst op 11-12-2015 15:17:37 | | | |

In de afgelopen jaren worden RFID-lezers, slimme huisgateways, temperatuur- en vochtigheidssensoren vaak gebruikt op het werk; meestal zijn er seriële poorten en netwerkpoorten; vanwege on-site redenen worden seriële poorten over het algemeen minder gebruikt, de meeste gebruiken netwerkpoorten. De verbindingsmethode is IP-adres en poort, sommige apparaten hebben zoeksoftware, andere niet. Frequent gebruik van de testomgeving en de locatie is onvermijdelijk verwarrend. Een recente RFID-lezer gebruikt een ZN-100 Ethernet port-naar-seriële poortmodule, en de zoeksoftware (ZNetCom Utility) is goed en de zoeksnelheid is ook zeer snel. (Zoals hieronder weergegeven)

Ik dacht eraan er zelf een te ontwikkelen, allereerst kunnen het IP-segment en de poort worden aangepast, wat makkelijk te gebruiken is; De zoeksnelheid moet hoog zijn, en ik heb haast om multithreading en asynchrone te gebruiken. Laten we eerst een foto maken.



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

Broncode draagt bij: IP端口扫描.rar (31.73 KB, Aantal downloads: 12)






Vorig:Welke protocollen zijn TCP-gebaseerd en welke zijn UDP-gebaseerd?
Volgend:Void pointer Basic
Geplaatst op 11-12-2015 15:51:53 |
Geplaatst op 11-12-2015 18:00:48 |
Prompt:Het bericht werd geblokkeerd door een admin of moderator
Geplaatst op 22-05-2016 15:13:38 |
Het is erg goed
Geplaatst op 20-08-2016 16:35:02 |
Het blijkt dat de scanproxy-software van de eigenaar ook is verbeterd met verwijzing naar deze broncode. Bedankt!
Geplaatst op 21-08-2016 13:11:18 |
Waarom kan dit niet werken?
 Huisbaas| Geplaatst op 03-12-2025 11:58:07 |
TCP-poortconnectiviteitstest



 Huisbaas| Geplaatst op 03-12-2025 11:58:49 |
.NET/C# controleert of er een TCP-poort beschikbaar is
https://www.itsvse.com/thread-10721-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com