Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 22382|Atsakyti: 7

[WinForm] 【Didelės spartos】 C# IP adreso segmento prievado kelių gijų skaitytuvas

[Kopijuoti nuorodą]
Paskelbta 2015-12-11 15:17:37 | | | |

Pastaraisiais metais darbe dažnai naudojami RFID skaitytuvai, išmaniųjų namų šliuzai, temperatūros ir drėgmės jutikliai, paprastai yra nuoseklieji prievadai ir tinklo prievadai, dėl priežasčių vietoje nuoseklieji prievadai paprastai naudojami rečiau, dauguma jų naudoja tinklo prievadus. Prisijungimo būdas yra IP adresas ir prievadas, kai kurie įrenginiai turi paieškos programinę įrangą, kiti ne. Dažnas bandymo aplinkos ir svetainės naudojimas neišvengiamai painus. Naujausias RFID skaitytuvas naudoja ZN-100 Ethernet port-to-serial prievado modulį, o paieškos programinė įranga (ZNetCom Utility) yra gera, o paieškos greitis taip pat labai greitas. (Kaip parodyta žemiau)

Aš galvojau sukurti pats, visų pirma, IP segmentą ir prievadą galima pritaikyti, o tai lengva naudoti; Paieškos greitis turi būti greitas, o aš skubu naudoti kelių gijų ir asinchroninį. Pirmiausia nufotografuokime.



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

Šaltinio kodas prisideda: IP端口扫描.rar (31.73 KB, Atsisiuntimų skaičius: 12)






Ankstesnis:Kurie protokolai yra pagrįsti TCP, o kurie – UDP?
Kitą:Void Pointer Basic
Paskelbta 2015-12-11 15:51:53 |
Paskelbta 2015-12-11 18:00:48 |
Raginimas:Įrašą užblokavo administratorius arba moderatorius
Paskelbta 2016-05-22 15:13:38 |
Tai labai gerai
Paskelbta 2016-08-20 16:35:02 |
Pasirodo, savininko nuskaitymo tarpinio serverio programinė įranga taip pat patobulinta atsižvelgiant į šį šaltinio kodą. Ačiū!
Paskelbta 2016-08-21 13:11:18 |
Kodėl tai negali veikti?
 Savininkas| Paskelbta 2025-12-03 11:58:07 |
TCP prievado ryšio testas



 Savininkas| Paskelbta 2025-12-03 11:58:49 |
.NET/C# tikrina, ar yra TCP prievadas
https://www.itsvse.com/thread-10721-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com