C# 单ip端口扫描工具 (多线程)
来源:互联网 发布:企业网络商学院 编辑:程序博客网 时间:2024/06/05 13:26
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;
namespace 端口扫描
{
public partial class Form1 : Form
{
ThreadStart threadstart;
Thread[] thread;
int port; //当前正在扫描的端口
int portmax; //扫描端口最大值
public Form1()
{
InitializeComponent();
}
public bool IsPortOpen(string ip, int port) //判断某一计算机端口是否处于打开状态
{
try
{
TcpClient client = new TcpClient(); //创建一个TcpClient实例
IPAddress address = IPAddress.Parse(ip); //转化string类型的ip地址到IpAddress
client.Connect(address, port); //连接服务器address的port端口
client.Close(); //连接成功立即断开
return true;
}
catch (Exception e)
{
return false;
}
}
delegate void Show_Change(string input);
public void ShowProc(string input)
{
this.lab_show.Text = input;
}
public void ScanThread()
{
while (true)
{
int nowport;
lock (this)
{
if (port > portmax)
return;
else
{
//lab_show.Text = port.ToString();
this.BeginInvoke(new Show_Change(ShowProc), new object[] { port.ToString() });
nowport = port;
port++;
}
}
if(IsPortOpen(txt_ip.Text,nowport))
listBox_Return.Items.Add(nowport.ToString() + "端口............开放");
}
}
private void btn_scan_Click(object sender, EventArgs e)
{
listBox_Return.Items.Clear();
int ThreadCount = (int)numericUpDown_ThreadCount.Value; //线程数量
thread = new Thread[ThreadCount];
threadstart = new ThreadStart(ScanThread);
for (int i = 0; i < ThreadCount; i++)
{
Thread t = new Thread(threadstart);
thread[i] = t;
}
portmax = (int)numericUpDown_Max.Value;
port = (int)numericUpDown_Min.Value;
for (int i = 0; i < ThreadCount; i++)
{
thread[i].Start();
}
}
private void Form1_Load(object sender, EventArgs e)
{
lab_show.Text = "";
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void btn_ping_Click(object sender, EventArgs e) //ping按钮事件
{
string command = @"ping "+txt_UrlOrIp.Text;
txt_ping.Text = RunCmd(command);
}
public string RunCmd(string command) //运行cmd命令,并返回结果字符串
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c" + command;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
return p.StandardOutput.ReadToEnd();
}
int[] port_array = { 21, 23, 80, 1433, 3306, 3389 }; //常用端口
string ip;
public void Scan()
{
for (int i = 0; i < port_array.Length; i++)
{
if (IsPortOpen(ip, port_array[i]))
{
listBox1.Items.Add(port_array[i].ToString() + "端口.............开放");
listBox1.Items.Add("");
}
else
{
listBox1.Items.Add(port_array[i].ToString() + "端口.............关闭");
listBox1.Items.Add("");
}
}
}
private void btn_Start_Click(object sender, EventArgs e) //扫描计算机常用端口
{
listBox1.Items.Clear();
ip = txt_IpAlways.Text;
ThreadStart ts = new ThreadStart(Scan);
Thread th = new Thread(ts);
th.Start();
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;
namespace 端口扫描
{
public partial class Form1 : Form
{
ThreadStart threadstart;
Thread[] thread;
int port; //当前正在扫描的端口
int portmax; //扫描端口最大值
public Form1()
{
InitializeComponent();
}
public bool IsPortOpen(string ip, int port) //判断某一计算机端口是否处于打开状态
{
try
{
TcpClient client = new TcpClient(); //创建一个TcpClient实例
IPAddress address = IPAddress.Parse(ip); //转化string类型的ip地址到IpAddress
client.Connect(address, port); //连接服务器address的port端口
client.Close(); //连接成功立即断开
return true;
}
catch (Exception e)
{
return false;
}
}
delegate void Show_Change(string input);
public void ShowProc(string input)
{
this.lab_show.Text = input;
}
public void ScanThread()
{
while (true)
{
int nowport;
lock (this)
{
if (port > portmax)
return;
else
{
//lab_show.Text = port.ToString();
this.BeginInvoke(new Show_Change(ShowProc), new object[] { port.ToString() });
nowport = port;
port++;
}
}
if(IsPortOpen(txt_ip.Text,nowport))
listBox_Return.Items.Add(nowport.ToString() + "端口............开放");
}
}
private void btn_scan_Click(object sender, EventArgs e)
{
listBox_Return.Items.Clear();
int ThreadCount = (int)numericUpDown_ThreadCount.Value; //线程数量
thread = new Thread[ThreadCount];
threadstart = new ThreadStart(ScanThread);
for (int i = 0; i < ThreadCount; i++)
{
Thread t = new Thread(threadstart);
thread[i] = t;
}
portmax = (int)numericUpDown_Max.Value;
port = (int)numericUpDown_Min.Value;
for (int i = 0; i < ThreadCount; i++)
{
thread[i].Start();
}
}
private void Form1_Load(object sender, EventArgs e)
{
lab_show.Text = "";
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void btn_ping_Click(object sender, EventArgs e) //ping按钮事件
{
string command = @"ping "+txt_UrlOrIp.Text;
txt_ping.Text = RunCmd(command);
}
public string RunCmd(string command) //运行cmd命令,并返回结果字符串
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/c" + command;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
return p.StandardOutput.ReadToEnd();
}
int[] port_array = { 21, 23, 80, 1433, 3306, 3389 }; //常用端口
string ip;
public void Scan()
{
for (int i = 0; i < port_array.Length; i++)
{
if (IsPortOpen(ip, port_array[i]))
{
listBox1.Items.Add(port_array[i].ToString() + "端口.............开放");
listBox1.Items.Add("");
}
else
{
listBox1.Items.Add(port_array[i].ToString() + "端口.............关闭");
listBox1.Items.Add("");
}
}
}
private void btn_Start_Click(object sender, EventArgs e) //扫描计算机常用端口
{
listBox1.Items.Clear();
ip = txt_IpAlways.Text;
ThreadStart ts = new ThreadStart(Scan);
Thread th = new Thread(ts);
th.Start();
}
}
}
0 0
- C# 单ip端口扫描工具 (多线程)
- Python多线程端口扫描工具
- C#,多线程客户端IP端口扫描
- 使用Java开发多线程端口扫描工具
- C#编写的多线程端口扫描程序!
- C#编写的多线程端口扫描程序
- C#编写的多线程端口扫描程序
- C#编写的多线程端口扫描程序
- C#很久以前写的端口扫描工具
- 多线程端口扫描
- Nmap 5.51-gui(win)单文件免安装绿色版 强大的端口扫描工具
- 端口扫描工具
- Python中多线程和单线程端口扫描对比
- C#端口扫描
- C# 端口扫描
- 单线程端口扫描
- Python 多线程端口扫描软件
- python多线程端口扫描程序
- 监听back按键,再次点击退出应用
- Java开发中一些内置对象的总结
- 数据类型和Json格式
- 快速开发框架部分视频教程汇总
- UVa1342That Nice Euler Circuit(欧拉函数)
- C# 单ip端口扫描工具 (多线程)
- log file parallel write
- Android实现限制EditText输入文字的数量
- 264、Ugly Number II
- 完整java开发中JDBC连接数据库代码和步骤
- java学习路线及书籍下载
- cocoapods 安装报错报错
- PBOC文件系统详解2
- android 获取string.xml中的value