日期:2014-05-19  浏览次数:20759 次

请问有关C#写端口扫描的问题,谢谢高手!
try
{
this.progressBar1.Maximum   =   ijiesu;
this.progressBar1.Minimum   =   ikaishi;
this.richTextBox1.Text   =   "开始扫描端口:   \n ";
this.richTextBox1.Update();
for(int   i=   ikaishi;i <ijiesu;i++)
{
this.progressBar1.Value=   i;
TcpClient     MyTCP   =   null;
try
{
MyTCP   =   new   TcpClient(this.textBox1.Text,i);
this.richTextBox1.Text   +=   "端口: "+i.ToString()+ "开放!   \n ";
this.richTextBox1.Update();

}
catch
{
this.richTextBox1.Text   +=   "端口 "+i.ToString()+ "没有开放     \n ";
this.richTextBox1.Update();
}
}
this.richTextBox1.Text   =   "扫描结束! ";
}
catch
{
MessageBox.Show( "扫描错误 ");
}

有try效率很慢啊~~有办法优化吗??
还有~通过MyTCP   =   new   TcpClient(this.textBox1.Text,i);
好象不可以扫出开放端口啊~~
是不是方法错了?还是怎么的?
高人指点下~谢谢@!

------解决方案--------------------
catch指定具体的Exception类型
设置一下超时时间
要不然扑捉所有异常的话超时默认是30S你要等30S才有回应