Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 22382|Válasz: 7

[WinForm] 【High Speed】C# IP-címszegmens port többszálas szkenner

[Linket másol]
Közzétéve 2015. 12. 11. 15:17:37 | | | |

Az utóbbi években gyakran használják a munkában RFID olvasókat, okos otthon átjárókat, hőmérséklet- és páratartalom-érzékelőket, általában sorozatos portok és hálózati portok vannak, helyszíni okokból a sorozatos portokat általában kevésbé használják, a legtöbb hálózati portot használ. A csatlakozási mód az IP-cím és a port, néhány eszközön van keresőszoftver, másoknak nincs. A tesztkörnyezet és az oldal gyakori használata elkerülhetetlenül zavaros. Egy nemrégiben készült RFID olvasó ZN-100 Ethernet port-to-serial port modult használ, és a keresőszoftver (ZNetCom Utility) jó, valamint a keresési sebesség is nagyon gyors. (Ahogy lent látható)

Én is gondolkodtam rajta, először is, az IP szegmens és port testreszabható, ami könnyen használható; A keresési sebességnek kell gyorsnak lennie, és sietek használni a többszálas és aszinkron rendszert. Készítsünk először egy képet.



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

A forráskód hozzájárul: IP端口扫描.rar (31.73 KB, Letöltések száma: 12)






Előző:Mely protokollok TCP-alapúak, és melyek UDP-alapúak?
Következő:Void Pointer Basic
Közzétéve 2015. 12. 11. 15:51:53 |
Közzétéve 2015. 12. 11. 18:00:48 |
Haladéktalan:A bejegyzést egy admin vagy moderátor blokkolta
Közzétéve 2016. 05. 22. 15:13:38 |
Nagyon jó
Közzétéve 2016. 08. 20. 16:35:02 |
Kiderült, hogy a tulajdonos szkennelő proxy szoftvere is javult ehhez a forráskódhoz viszonyítva. Köszönöm!
Közzétéve 2016. 08. 21. 13:11:18 |
Miért nem működhet ez?
 Háziúr| Közzétéve 2025. 12. 03. 11:58:07 |
TCP port kapcsolati teszt



 Háziúr| Közzétéve 2025. 12. 03. 11:58:49 |
A .NET/C# ellenőrzi, hogy elérhető-e TCP port
https://www.itsvse.com/thread-10721-1-1.html
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com