Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 22382|Yanıt: 7

[WinForm] 【Yüksek Hız】C# IP adres segmenti portu çok iş parçacıklı tarayıcı

[Bağlantıyı kopyala]
Yayınlandı 11.12.2015 15:17:37 | | | |

Son yıllarda RFID okuyucular, akıllı ev geçitleri, sıcaklık ve nem sensörleri genellikle işte kullanılıyor; genellikle seri portlar ve ağ portları var, ancak yerdeki nedenlerle seri portlar genellikle daha az kullanılıyor, çoğu ağ portu kullanıyor. Bağlantı yöntemi IP adresi ve porttur, bazı cihazlarda arama yazılımı var, bazılarında yok. Test ortamının ve sitenin sıkça kullanılması kaçınılmaz olarak kafa karıştırıcıdır. Yakın zamanda kullanılan bir RFID okuyucu, ZN-100 Ethernet port-to-serial port modülü kullanıyor ve arama yazılımı (ZNetCom Utility) iyi ve arama hızı da çok hızlı. (Aşağıda gösterildiği gibi)

Kendim bir tane geliştirmeyi düşündüm, öncelikle IP segmenti ve portu özelleştirilebilir ve kullanımı kolay; Arama hızı hızlı olmalı ve çoklu iş dişiliği ile asenkron kullanmaya acele ediyorum. Önce bir fotoğraf çekelim.



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

Kaynak kodu katkıda bulunur: IP端口扫描.rar (31.73 KB, İndirme sayısı: 12)






Önceki:Hangi protokoller TCP tabanlı, hangileri UDP tabanlı?
Önümüzdeki:Void pointer basic
Yayınlandı 11.12.2015 15:51:53 |
Yayınlandı 11.12.2015 18:00:48 |
Istemi:Gönderi bir yönetici veya moderatör tarafından engellendi
Yayınlandı 22.05.2016 15:13:38 |
Çok iyi
Yayınlandı 20.08.2016 16:35:02 |
Sahibinin tarama proxy yazılımının da bu kaynak koduna göre geliştirildiği ortaya çıktı. Teşekkür ederim!
Yayınlandı 21.08.2016 13:11:18 |
Neden bu işe yaramıyor?
 Ev sahibi| Yayınlandı 3.12.2025 11:58:07 |
TCP port bağlantı testi



 Ev sahibi| Yayınlandı 3.12.2025 11:58:49 |
.NET/C# TCP portunun mevcut olup olmadığını kontrol eder
https://www.itsvse.com/thread-10721-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com