老师要求写的一个端口扫描器 图: 源代码: 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; } } }