Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 22382|Отговор: 7

[WinForm] 【Високоскоростен】C# IP адресен сегмент порт, многонишков скенер

[Копирай линк]
Публикувано в 11.12.2015 г. 15:17:37 ч. | | | |

През последните години често се използват RFID четци, умни домашни шлюзове, сензори за температура и влажност, като обикновено има серийни и мрежови портове, поради причини на място, серийните портове обикновено се използват по-рядко, повечето от тях използват мрежови портове. Методът на свързване е IP адрес и порт, някои устройства имат софтуер за търсене, други не. Честото използване на тестовата среда и сайта неизбежно е объркващо. Скорошен RFID четец използва ZN-100 Ethernet модул порт към сериен порт, а софтуерът за търсене (ZNetCom Utility) е добър, а скоростта на търсене също е много висока. (Както е показано по-долу)

Мислех да разработя такъв сам, първо, IP сегментът и портът могат да се персонализират, което е лесно за използване; Скоростта на търсене трябва да е бърза, а аз бързам да използвам мултитрединг и асинхронен режим. Нека първо направим снимка.



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

Изходният код допринася: IP端口扫描.rar (31.73 KB, Брой изтегляния: 12)






Предишен:Кои протоколи са базирани на TCP и кои са базирани на UDP?
Следващ:Основен указател на празнотата
Публикувано в 11.12.2015 г. 15:51:53 ч. |
Публикувано в 11.12.2015 г. 18:00:48 ч. |
Бърз:Публикацията беше блокирана от администратор или модератор
Публикувано в 22.05.2016 г. 15:13:38 ч. |
Много е добър
Публикувано в 20.08.2016 г. 16:35:02 ч. |
Оказва се, че софтуерът за сканиране на прокси на собственика също е подобрен спрямо този изходен код. Благодарим ви!
Публикувано в 21.08.2016 г. 13:11:18 ч. |
Защо това не може да проработи?
 Хазяин| Публикувано в 3.12.2025 г. 11:58:07 ч. |
Тест за свързаност на TCP порта



 Хазяин| Публикувано в 3.12.2025 г. 11:58:49 ч. |
.NET/C# проверява дали има наличен TCP порт
https://www.itsvse.com/thread-10721-1-1.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com