A.2多任务网段扫描练习 (增加功能)
来源:互联网 发布:矩阵论导教导学导考 编辑:程序博客网 时间:2024/06/06 12:55
为了实现对IP地址后两段的任意设定 几乎改掉了之前所有的代码 -.-||
与之前http://blog.csdn.net/qq_35252878/article/details/60781383相比,增加了对IP地址后两位也可以设置最大最小值的功能。
效果:
MainWindow.xaml.cs:
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Text;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;using System.Timers;using System.Diagnostics;using System.Threading;using System.Drawing;namespace A._2{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } long minTime; long maxTime; string add2_41; int add2_4; string add2_51; int add2_5; string add3_41; int add3_4; string add3_51; int add3_5; string add2; string address; string add; private void judge_IPAddress(object Address) { string Dname; String address=(string)Address; Stopwatch sw = new Stopwatch(); sw.Start(); try { IPAddress ip = IPAddress.Parse(address); Dname = Dns.GetHostEntry(ip).HostName; } catch { Dname = "(不在线)"; } sw.Stop(); if (sw.ElapsedMilliseconds > maxTime) maxTime = sw.ElapsedMilliseconds; if (sw.ElapsedMilliseconds < minTime) minTime = sw.ElapsedMilliseconds; ListBox.Dispatcher.Invoke(new Action(() => { ListBox.Items.Add("扫描地址:" + Address + ",扫描用时:" + sw.ElapsedMilliseconds + "毫秒,主机DNS名称:" + Dname); })); // ListBox.Items.Add("扫描地址:" + Address + ",扫描用时:"+sw.ElapsedMilliseconds+"毫秒,主机DNS名称:"+Dname); //if(num==0) // ListBox.Dispatcher.Invoke(new Action(() => { ListBox.Items.Add("扫描结束!"); })); //Thread.Sleep(1000); } private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { } private void textBox_TextChanged(object sender, TextChangedEventArgs e) { } private void convrt(int star) { if(star==add2_4) { //MessageBox.Show("star1=" + star+"开始"+add2_5); for(int k=add2_5;k<=255;k++) { add2 = star.ToString() + "." + k.ToString(); address = add + add2; begin(); } } else if(star==add3_4) { for(int h=0;h<=add3_5;h++) { add2 = star.ToString() + "." + h.ToString(); address = add + add2; begin(); } } else { //MessageBox.Show("star="+star); for(int q=0;q<=255;q++) { add2 = star.ToString() + "." + q.ToString(); address = add + add2; begin(); } } } private void begin() { try { IPAddress ip = IPAddress.Parse(address); } catch { Textbox.Visibility = Visibility.Visible; return; } Thread t = new Thread(judge_IPAddress); t.Start(address); } private void button_Click(object sender, RoutedEventArgs e) { minTime = 0xffff; maxTime = 0; int flag = 0; int the2 = 0; int the3 = 0; int L1 = 0; int L2 = 0; add = textBox.Text; int l = add.Length; if(add[l-1]!='.') { add = add + '.'; } Textbox.Foreground = new SolidColorBrush(Colors.White); //num = Int32.Parse(textBox2.Text) - Int32.Parse(textBox1.Text); string add2 = textBox1.Text; string add3 = textBox2.Text; for (int i = 0; i < add2.Length;i++) //判断textbox1中是否是地址的后两段 { if(add2[i]=='.') { flag = 1; the2 = i; } } if(flag==1) //起始值为***.*** { L1 = add2.Length; L2 = add3.Length; add2_41 = add2.Substring(0, the2);//记录下倒数第二位的初始值 add2_4 = (Int32.Parse(add2_41)); //将倒数第二位的初始值转化int型 add2_51 = add2.Substring(L1 - the2); add2_5 = Int32.Parse(add2_51); for (int i = 0; i < add3.Length; i++) { if (add3[i] == '.') the3 = i; } add3_41 = add3.Substring(0, the3);//记录下倒数第二位的结束值 add3_4 = (Int32.Parse(add3_41)); //将倒数第二位的结束值转化int型 add3_51 = add3.Substring(L2 - the3); add3_5 = Int32.Parse(add3_51); if (add2_4 > add3_4) add2_4 ^= add3_4 ^= add2_4 ^= add3_4; //ListBox.Dispatcher.Invoke(new Action(() => { ListBox.Items.Add("初始:" + add2_4 + ",结束:" + add3_4 + "初始:" + add2_5+"结束:"+add3_5); })); for(int i=add2_4;i<=add3_4;i++) { convrt(i); } //ListBox.Dispatcher.Invoke(new Action(() => { ListBox.Items.Add("最长用时:" + maxTime + "s,最短用时:" + minTime + "s."); })); MessageBox.Show("1扫描结束!"+"最长用时:"+maxTime+"最短用时:"+minTime); } if(flag==0) //起始值为*** { for (int i = Int32.Parse(textBox1.Text); i <= Int32.Parse(textBox2.Text); i++) { address = add + i.ToString(); begin(); } //t.Abort(); //ListBox.Dispatcher.Invoke(new Action(() => { ListBox.Items.Add("最长用时:" + maxTime + "s,最短用时:" + minTime + "s."); })); MessageBox.Show("2扫描结束!" + "最长用时:" + maxTime + "最短用时:" + minTime); } } private void Textbox_TextChanged_1(object sender, TextChangedEventArgs e) { } }}
目前只是达到了预期的效果,还有很多地方不尽完善。
一会或许还要进行完善,注释显示了很多思考过程,不想删。
0 0
- A.2多任务网段扫描练习 (增加功能)
- A.2多任务网段扫描练习
- C# 多任务网段扫描练习
- 多任务网段扫描
- bat多进程扫描网段
- Nmap扫描多网段时的坑
- Shell实现多进程扫描IP网段
- 给局域网多网段增加访问路由
- 十七. 增加一个项目协作留言板功能(三)----- 增加任务的修改和删除功能
- C#实现网段扫描
- C#实现网段扫描
- PXGD网段扫描
- C# 实现网段扫描
- C#实现网段扫描
- C#实现网段扫描
- C#实现网段扫描
- C#实现网段扫描
- C#实现网段扫描
- POJ 3233
- 解线性同余方程的应用(一)
- 【平衡树启发式合并】POJ1741[Tree]题解
- pat 1043. Is It a Binary Search Tree (25)
- oracle的分页(rownum)
- A.2多任务网段扫描练习 (增加功能)
- ZCMU—C
- Mongo Group
- 质数求法
- uva 851 Flooded!
- Servlet之间的跳转
- FPGA学习(第1节)-Quartus II 12.1创建FPGA-DEMO项目(LED流水灯)
- 微信开放平台Android应用签名的本质及如何获取
- 用smarty模板做数据实现修改、分页等功能