Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 22382|Atbildi: 7

[WinForm] 【Liels ātrums】 C# IP adreses segmenta porta daudzpavedienu skeneris

[Kopēt saiti]
Publicēts 11.12.2015 15:17:37 | | | |

Pēdējos gados darbā bieži tiek izmantoti RFID lasītāji, viedās mājas vārtejas, temperatūras un mitruma sensori, parasti ir seriālie porti un tīkla porti, vietējo iemeslu dēļ seriālās ostas parasti tiek izmantotas mazāk, lielākā daļa no tām izmanto tīkla portus. Savienojuma metode ir IP adrese un ports, dažām ierīcēm ir meklēšanas programmatūra, dažām nav. Bieža testa vides un vietnes izmantošana ir neizbēgami mulsinošs. Nesenais RFID lasītājs izmanto ZN-100 Ethernet port-to-serial port moduli, un meklēšanas programmatūra (ZNetCom Utility) ir laba, un meklēšanas ātrums ir arī ļoti ātrs. (Kā parādīts zemāk)

Es domāju par tā izstrādi, pirmkārt, IP segmentu un portu var pielāgot, kas ir viegli lietojams; Meklēšanas ātrumam jābūt ātram, un es steidzos izmantot daudzpavedienu un asinhronu. Vispirms nofotografēsim.



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

Pirmkods veicina: IP端口扫描.rar (31.73 KB, Lejupielādes skaits: 12)






Iepriekšējo:Kuri protokoli ir balstīti uz TCP un kuri ir balstīti uz UDP?
Nākamo:Anulēt rādītāju pamata
Publicēts 11.12.2015 15:51:53 |
Publicēts 11.12.2015 18:00:48 |
Uzvedne:Ziņu bloķēja administrators vai moderators
Publicēts 22.05.2016 15:13:38 |
Tas ir ļoti labi
Publicēts 20.08.2016 16:35:02 |
Izrādās, ka īpašnieka skenēšanas starpniekservera programmatūra ir uzlabota, atsaucoties uz šo avota kodu. Paldies!
Publicēts 21.08.2016 13:11:18 |
Kāpēc tas nevar darboties?
 Saimnieks| Publicēts 03.12.2025 11:58:07 |
TCP porta savienojamības pārbaude



 Saimnieks| Publicēts 03.12.2025 11:58:49 |
.NET/C# pārbauda, vai ir pieejams TCP ports
https://www.itsvse.com/thread-10721-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com