老师要求写的一个端口扫描器
图:
源代码:
using
System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace scanports
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtip;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtmin;
private System.Windows.Forms.TextBox txtmax;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ListBox lisstatus;
private System.Windows.Forms.Button btnexit;
private System.Windows.Forms.Button btnscan;
private System.Windows.Forms.Button btnpause;
private System.Windows.Forms.Button btncontinnue;
//定义一个线程
private Thread t;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnscan_Click(object sender, System.EventArgs e)
{
//清空列表
lisstatus.Items.Clear();
//相应的按钮的显示与关闭
btnpause.Enabled=true;
btnscan.Enabled=false;
this.txtip.Enabled=false;
this.txtmax.Enabled=false;
this.txtmin.Enabled=false;
//调用线程
t=new Thread(new ThreadStart(scanport));
t.Start();
}
void scanport()
{
try
{
TcpClient client=new TcpClient();
IPAddress address=IPAddress.Parse(txtip.Text);
for(int i=int.Parse(txtmin.Text);i<=int.Parse(txtmax.Text);i++)
{
try
{
//扫描制定的端口范围
client.Connect(address,i);
lisstatus.Items.Add("端口"+i+"是打开的");
}
catch(SocketException)
{
lisstatus.Items.Add("端口"+i+"是关闭的");
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//设置按钮的状态
btnscan.Enabled=true;
this.txtip.Enabled=true;
this.txtmax.Enabled=true;
this.txtmin.Enabled=true;
}
}
private void btnexit_Click(object sender, System.EventArgs e)
{
//关闭线程,并退出
t.Abort();
this.Close();
}
private void btnpause_Click(object sender, System.EventArgs e)
{
//暂停线程
btnpause.Enabled=false;
t.Suspend();
btncontinnue.Enabled=true;
}
private void btncontinnue_Click(object sender, System.EventArgs e)
{
//继续线程
btncontinnue.Enabled=false;
t.Resume();
btnpause.Enabled=true;
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace scanports
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtip;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtmin;
private System.Windows.Forms.TextBox txtmax;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ListBox lisstatus;
private System.Windows.Forms.Button btnexit;
private System.Windows.Forms.Button btnscan;
private System.Windows.Forms.Button btnpause;
private System.Windows.Forms.Button btncontinnue;
//定义一个线程
private Thread t;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnscan_Click(object sender, System.EventArgs e)
{
//清空列表
lisstatus.Items.Clear();
//相应的按钮的显示与关闭
btnpause.Enabled=true;
btnscan.Enabled=false;
this.txtip.Enabled=false;
this.txtmax.Enabled=false;
this.txtmin.Enabled=false;
//调用线程
t=new Thread(new ThreadStart(scanport));
t.Start();
}
void scanport()
{
try
{
TcpClient client=new TcpClient();
IPAddress address=IPAddress.Parse(txtip.Text);
for(int i=int.Parse(txtmin.Text);i<=int.Parse(txtmax.Text);i++)
{
try
{
//扫描制定的端口范围
client.Connect(address,i);
lisstatus.Items.Add("端口"+i+"是打开的");
}
catch(SocketException)
{
lisstatus.Items.Add("端口"+i+"是关闭的");
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//设置按钮的状态
btnscan.Enabled=true;
this.txtip.Enabled=true;
this.txtmax.Enabled=true;
this.txtmin.Enabled=true;
}
}
private void btnexit_Click(object sender, System.EventArgs e)
{
//关闭线程,并退出
t.Abort();
this.Close();
}
private void btnpause_Click(object sender, System.EventArgs e)
{
//暂停线程
btnpause.Enabled=false;
t.Suspend();
btncontinnue.Enabled=true;
}
private void btncontinnue_Click(object sender, System.EventArgs e)
{
//继续线程
btncontinnue.Enabled=false;
t.Resume();
btnpause.Enabled=true;
}
}
}