Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22382|Svare: 7

[WinForm] 【High Speed】C# IP-adressesegmentport multitrådet skanner

[Kopier lenke]
Publisert på 11.12.2015 15:17:37 | | | |

De siste årene brukes RFID-lesere, smarthjem-gatewayer, temperatur- og fuktighetssensorer ofte i arbeid, vanligvis finnes det serielle porter og nettverksporter, på grunn av lokale årsaker er serielle porter generelt mindre brukt, de fleste bruker nettverksporter. Tilkoblingsmetoden er IP-adresse og port, noen enheter har søkeprogramvare, andre ikke. Hyppig bruk av testmiljøet og stedet er uunngåelig forvirrende. En nyere RFID-leser bruker en ZN-100 Ethernet port-til-seriell portmodul, og søkeprogramvaren (ZNetCom Utility) er god og søkehastigheten er også svært rask. (Som vist nedenfor)

Jeg vurderte å utvikle en selv, først og fremst kan IP-segmentet og porten tilpasses, noe som er enkelt å bruke; Søkehastigheten må være rask, og jeg har det travelt med å bruke multitråding og asynkron. La oss ta et bilde 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 koden

Kildekoden bidrar: IP端口扫描.rar (31.73 KB, Antall nedlastinger: 12)






Foregående:Hvilke protokoller er TCP-baserte og hvilke er UDP-baserte?
Neste:Void Pointer Basic
Publisert på 11.12.2015 15:51:53 |
Publisert på 11.12.2015 18:00:48 |
Omgående:Innlegget ble blokkert av en administrator eller moderator
Publisert på 22.05.2016 15:13:38 |
Den er veldig god
Publisert på 20.08.2016 16:35:02 |
Det viser seg at eierens skanneproxy-programvare også er forbedret med henvisning til denne kildekoden. Takk!
Publisert på 21.08.2016 13:11:18 |
Hvorfor kan ikke dette fungere?
 Vert| Publisert på 03.12.2025 11:58:07 |
TCP-porttilkoblingstest



 Vert| Publisert på 03.12.2025 11:58:49 |
.NET/C# sjekker om en TCP-port er tilgjengelig
https://www.itsvse.com/thread-10721-1-1.html
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com