Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22382|Vastaus: 7

[WinForm] 【High Speed】C# IP-osoitesegmenttiportti monisäikeinen skanneri

[Kopioi linkki]
Julkaistu 11.12.2015 15.17.37 | | | |

Viime vuosina työssä on usein käytetty RFID-lukijoita, älykotiportteja, lämpötila- ja kosteusantureita, yleensä on sarjaportteja ja verkkoportteja, mutta paikan päällä toimivista syistä sarjaportteja käytetään yleensä vähemmän, useimmat niistä käyttävät verkkoportteja. Yhteystapa on IP-osoite ja portti, joillakin laitteilla on hakuohjelmisto, joissakin ei. Testiympäristön ja sivuston toistuva käyttö on väistämättä hämmentävää. Uudempi RFID-lukija käyttää ZN-100 Ethernet port-to-serial port -moduulia, ja hakuohjelmisto (ZNetCom Utility) on hyvä ja hakunopeus on myös erittäin nopea. (Kuten alla näkyy)

Ajattelin kehittää sellaisen itse, ensinnäkin IP-segmentti ja portti voidaan räätälöidä, mikä on helppokäyttöinen; Hakunopeuden täytyy olla nopea, ja minulla on kiire käyttää monisäikeisyyttä ja asynkronista. Otetaan ensin kuva.



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

Lähdekoodi vaikuttaa: IP端口扫描.rar (31.73 KB, Latausten määrä: 12)






Edellinen:Mitkä protokollat perustuvat TCP:hen ja mitkä UDP:hen?
Seuraava:Void Pointer Basic
Julkaistu 11.12.2015 15.51.53 |
Julkaistu 11.12.2015 18.00.48 |
Ripeä:Julkaisu estettiin ylläpitäjän tai moderaattorin toimesta
Julkaistu 22.5.2016 15.13.38 |
Se on todella hyvä
Julkaistu 20.8.2016 16.35.02 |
Kävi ilmi, että omistajan skannausvälityspalvelinohjelmisto on myös parannettu tämän lähdekoodin perusteella. Kiitos!
Julkaistu 21.8.2016 13.11.18 |
Miksi tämä ei voi toimia?
 Vuokraisäntä| Julkaistu 3.12.2025 11.58.07 |
TCP-porttiyhteystesti



 Vuokraisäntä| Julkaistu 3.12.2025 11.58.49 |
.NET/C# tarkistaa, onko TCP-portti saatavilla
https://www.itsvse.com/thread-10721-1-1.html
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com