Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 22382|Antwort: 7

[WinForm] 【High Speed】C# IP-Adresssegment-Port Multithreaded Scanner

[Link kopieren]
Veröffentlicht am 11.12.2015 15:17:37 | | | |

In den letzten Jahren werden RFID-Leser, Smart-Home-Gateways, Temperatur- und Feuchtigkeitssensoren häufig im Werk eingesetzt; in der Regel gibt es serielle Ports und Netzwerkanschlüsse; aus vor Ort gelegenen Gründen werden serielle Ports meist seltener genutzt, die meisten nutzen Netzwerkanschlüsse. Die Verbindungsmethode ist IP-Adresse und Port, einige Geräte haben Suchsoftware, andere nicht. Die häufige Nutzung der Testumgebung und des Standorts ist zwangsläufig verwirrend. Ein aktueller RFID-Leser verwendet ein ZN-100 Ethernet-Port-zu-Seriell-Port-Modul, und die Suchsoftware (ZNetCom Utility) ist gut und die Suchgeschwindigkeit ebenfalls sehr hoch. (Wie unten gezeigt)

Ich habe darüber nachgedacht, selbst einen zu entwickeln, erstens kann das IP-Segment und der Port angepasst werden, was einfach zu bedienen ist; Die Suchgeschwindigkeit muss hoch sein, und ich habe es eilig, Multithreading und asynchron zu verwenden. Lass uns zuerst ein Foto machen.



  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 kopieren

Quellcode trägt dazu bei: IP端口扫描.rar (31.73 KB, Anzahl der Downloads: 12)






Vorhergehend:Welche Protokolle basieren auf TCP und welche auf UDP?
Nächster:Void Pointer Basic
Veröffentlicht am 11.12.2015 15:51:53 |
Veröffentlicht am 11.12.2015 18:00:48 |
Prompt:Der Beitrag wurde von einem Admin oder Moderator blockiert
Veröffentlicht am 22.05.2016 15:13:38 |
Es ist sehr gut
Veröffentlicht am 20.08.2016 16:35:02 |
Es stellt sich heraus, dass auch die Scan-Proxy-Software des Besitzers in Bezug auf diesen Quellcode verbessert wurde. Vielen Dank!
Veröffentlicht am 21.08.2016 13:11:18 |
Warum kann das nicht funktionieren?
 Vermieter| Veröffentlicht am 03.12.2025 11:58:07 |
TCP-Port-Konnektivitätstest



 Vermieter| Veröffentlicht am 03.12.2025 11:58:49 |
.NET/C# prüft, ob ein TCP-Port verfügbar ist
https://www.itsvse.com/thread-10721-1-1.html
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com