C# 多工網段掃描練習
建立一個WPF應用程式,用多工來掃描一個網段內的計算機,根據計算機的IP地址獲取其主機名,程式執行結果如下:
廢話不多說,直接上程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace A._2
{
/// <summary>
/// MainWindow.xaml 的互動邏輯
/// </summary>
public partial class MainWindow : Window
{
int n = 0;
DateTime taskBegin = DateTime.Now;
public MainWindow()
{
InitializeComponent();
textBox_first.Text = "192.168.1.";
textBox_start.Text = "102";
textBox_end.Text = "105";
}
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
IPAddress ipstart;
IPAddress ipend;
if (IPAddress.TryParse(textBox_first.Text + textBox_start.Text, out ipstart)&& IPAddress.TryParse(textBox_first.Text + textBox_end.Text, out ipend))
{
errorLable.Visibility = Visibility.Hidden;
}
else
{
errorLable.Visibility = Visibility.Visible;
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
IPAddress ipstart;
IPAddress ipend;
listBox.Items.Clear();
n = int.Parse(textBox_end.Text) - int.Parse(textBox_start.Text) + 1;
if (IPAddress.TryParse(textBox_first.Text + textBox_start.Text, out ipstart) && IPAddress.TryParse(textBox_first.Text + textBox_end.Text, out ipend))
{
errorLable.Visibility = Visibility.Hidden;
for (int i= int.Parse(textBox_start.Text); i<=int.Parse(textBox_end.Text);i++){
IPAddress ip = IPAddress.Parse(textBox_first.Text+i.ToString());
Thread t = new Thread(scan);
t.Start(ip);
}
}
else
{
errorLable.Visibility = Visibility.Visible;
}
}
private void scan(Object ip)
{
DateTime begin = DateTime.Now;
IPAddress ipAddress = (IPAddress)ip;
string hostName;
try
{
hostName = Dns.GetHostEntry(ipAddress).HostName;
}
catch
{
hostName = "(不線上)";
}
DateTime end = DateTime.Now;
TimeSpan ts = end - begin;
listBox.Dispatcher.Invoke(() => listBox.Items.Add("掃描地址:"+ ipAddress.ToString()+" 掃描用時:"+ ts.TotalMilliseconds+ "毫秒 " + " 主機名稱:" +hostName));
n--;
if (n == 0) {
DateTime taskEnd = DateTime.Now;
TimeSpan taskAll = taskEnd - taskBegin;
MessageBox.Show("掃描完畢!總用時:"+ taskAll.TotalMilliseconds + "毫秒");
}
}
}
}
此程式還可以細緻化一下,比如,起始值不能大於終止值,地址字首後面的點,程式可以自動補全,錯誤提示細緻化等等。
相關文章
- 掃描整個網段的多執行緒程式(轉)執行緒
- nmap掃描網段內的所有IP
- matlab練習程式(多線段交點)Matlab
- Cloudflare網址掃描器Cloud
- 掃描技術和掃描工具
- 掃描WPS加密網路加密
- 掃描所有無線網路
- 如何使用evilscan 掃描網路
- 網站漏洞掃描工具Uniscan網站
- 網路掃描整合工具SPARTA
- Joomla!網站掃描工具joomscanOOM網站
- C#多工並行階段控制—— Threading.BarrierC#並行thread
- Trivy 容器映象掃描工具學習
- C# 掃描並讀取圖片中的文字C#
- AWVS掃描器掃描web漏洞操作Web
- 人工智慧訓練使用視網膜掃描發現心臟病風險人工智慧
- Perun 內網滲透掃描神器內網
- 我談網路掃描–之二
- 埠掃描網路安全工具——NMAP
- Android掃描多媒體檔案剖析Android
- win10系統掃描器提示掃描不到掃描器如何解決Win10
- C# Twain協議呼叫掃描器,設定多影像輸出模式(Multi image output)C#AI協議模式
- 掃描王 for Mac專業圖片掃描工具Mac
- Nmap掃描教程之基礎掃描詳解
- C# 掃描識別圖片中的文字(.NET Framework)C#Framework
- ch3被動掃描學習
- Oracle中存取資料掃描Table及索引的方式(全表掃描,索引掃描等)Oracle索引
- go掃描指定路徑下,檔案過多Go
- MySQL中的全表掃描和索引樹掃描MySql索引
- 埠掃描器
- 安全掃描工具
- 綜合掃描工具
- SonarQube學習(三)- 專案程式碼掃描
- 京東掃描平臺EOS—JS掃描落地與實踐JS
- DAST 黑盒漏洞掃描器 第四篇:掃描效能AST
- 藍芽掃描工具btscanner修復暴力掃描模式藍芽模式
- iOS 使用CIDetector掃描相簿二維碼、原生掃描iOSIDE
- 索引全掃描和索引快速全掃描的區別索引