我試圖創建在C#端口掃描器,到目前爲止,我有這樣的:加快端口掃描C#
private void ip()
{
int start = 70;
int end = 80;
string ipString;
if (this.comboBox1.Text == "Domain") {
ipString= Dns.GetHostEntry(txtHost.Text).AddressList[0].ToString();
}
else {
ipString = txtHost.Text;
}
TcpClient asd = new TcpClient();
// MessageBox.Show(ipString);
IPAddress address = IPAddress.Parse(ipString);
for (int i = start; i <= end; i++)
{
try
{
asd.SendTimeout = 3000;
asd.ReceiveTimeout = 3000;
asd.Connect(address, i);
if (asd.Connected)
{
MessageBox.Show("Port " + i + " is open");
}
}
catch
{
MessageBox.Show("Port " + i + " is closed");
}
}
}
然而,對於關閉的端口,它有點慢,約20秒,我應該怎麼做才能讓該過程更快? 非常感謝。
「它有點慢」。你應該測量哪個位慢,所以我們不必猜測。 – spender
也許相關:http://stackoverflow.com/questions/1331902/c-sharp-tcp-port-scanner-resources – rene
你應該考慮異步網絡API。有很多可供選擇的,但如果您重視您的理智,請考慮.net4.5和async/await apis。另外值得考慮的是.net DNS apis沒有任何好處。也許可以考慮第三方選項。請參閱:http://stackoverflow.com/questions/11480742/dns-begingethost-methods-blocking – spender