Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 22382|Svar: 7

[WinForm] 【High Speed】C# IP adressesegmentport multi-threaded scanner

[Kopier link]
Opslået på 11/12/2015 15.17.37 | | | |

I de senere år bruges RFID-læsere, smarte hjem-gateways, temperatur- og fugtighedssensorer ofte i arbejdet, generelt findes der serielle porte og netværksporte, på grund af lokale årsager er serielle porte generelt mindre brugt, de fleste bruger netværksporte. Forbindelsesmetoden er IP-adresse og port, nogle enheder har søgesoftware, andre har ikke. Hyppig brug af testmiljøet og stedet er uundgåeligt forvirrende. En nyere RFID-læser bruger en ZN-100 Ethernet port-til-seriel portmodul, og søgesoftwaren (ZNetCom Utility) er god, og søgehastigheden er også meget hurtig. (Som vist nedenfor)

Jeg overvejede at udvikle en selv, for først og fremmest kan IP-segmentet og porten tilpasses, hvilket er nemt at bruge; Søgehastigheden skal være hurtig, og jeg har travlt med at bruge multitråding og asynkron. Lad os tage et billede først.



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

Kildekoden bidrager: IP端口扫描.rar (31.73 KB, Antal downloads: 12)






Tidligere:Hvilke protokoller er TCP-baserede, og hvilke er UDP-baserede?
Næste:Void Pointer Basic
Opslået på 11/12/2015 15.51.53 |
Opslået på 11/12/2015 18.00.48 |
Lynhurtig:Opslaget blev blokeret af en admin eller moderator
Opslået på 22/05/2016 15.13.38 |
Det er meget godt
Opslået på 20/08/2016 16.35.02 |
Det viser sig, at ejerens scanningsproxy-software også er forbedret i forhold til denne kildekode. Tak!
Opslået på 21/08/2016 13.11.18 |
Hvorfor kan det ikke fungere?
 Udlejer| Opslået på 03/12/2025 11.58.07 |
TCP-portforbindelsestest



 Udlejer| Opslået på 03/12/2025 11.58.49 |
.NET/C# tjekker, om der er en TCP-port tilgængelig
https://www.itsvse.com/thread-10721-1-1.html
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com