Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 22382|Répondre: 7

[WinForm] 【Scanner multithread à segment d’adresse IP haute vitesse】C#

[Copié le lien]
Publié sur 11/12/2015 15:17:37 | | | |

Ces dernières années, les lecteurs RFID, les passerelles domotiques intelligentes, les capteurs de température et d’humidité sont souvent utilisés au travail ; en général, il existe des ports série et des ports réseau, pour des raisons sur site, les ports série sont généralement moins utilisés, la plupart utilisent des ports réseau. La méthode de connexion est l’adresse IP et le port, certains appareils ont un logiciel de recherche, d’autres non. L’utilisation fréquente de l’environnement de test et du site est inévitablement source de confusion. Un lecteur RFID récent utilise un module port Ethernet ZN-100 port-à-série et le logiciel de recherche (ZNetCom Utility) est bon et la vitesse de recherche est également très rapide. (Comme montré ci-dessous)

J’ai pensé à en développer un moi-même, d’abord, le segment IP et le port peuvent être personnalisés, ce qui est facile à utiliser ; La vitesse de recherche doit être rapide, et je suis pressé d’utiliser le multithreading et l’asynchrone. Prenons d’abord une photo.



  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 de copie

Le code source contribue : IP端口扫描.rar (31.73 KB, Nombre de téléchargements: 12)






Précédent:Quels protocoles sont basés sur TCP et lesquels sont basés sur UDP ?
Prochain:Pointeur Void Basic
Publié sur 11/12/2015 15:51:53 |
Publié sur 11/12/2015 18:00:48 |
Prompt:Le post a été bloqué par un administrateur ou un modérateur
Publié sur 22/05/2016 15:13:38 |
C’est très bon
Publié sur 20/08/2016 16:35:02 |
Il s’avère que le logiciel de proxy de balayage du propriétaire a également été amélioré en référence à ce code source. Merci!
Publié sur 21/08/2016 13:11:18 |
Pourquoi cela ne peut-il pas fonctionner ?
 Propriétaire| Publié sur 03/12/2025 11:58:07 |
Test de connectivité des ports TCP



 Propriétaire| Publié sur 03/12/2025 11:58:49 |
.NET/C# vérifie si un port TCP est disponible
https://www.itsvse.com/thread-10721-1-1.html
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com