C# - 带有 IP 地址范围的端口扫描
Posted
技术标签:
【中文标题】C# - 带有 IP 地址范围的端口扫描【英文标题】:C# - Port Scann with IP Address Ranges 【发布时间】:2019-03-05 08:34:10 【问题描述】:我的代码有问题,运行速度很慢
我的代码:
private static void PortRangeScan()
Console.Clear();
var From = FROM.Split('.'); // example (103.218.27.85)
string From1 = From[0];
string From2 = From[1];
string From3 = From[2];
string From4 = From[3];
var To = TO.Split('.'); // example (123.218.27.85)
string To1 = To[0];
string To2 = To[1];
string To3 = To[2];
string To4 = To[3];
for (int CurrentProxy = int.Parse(From1); CurrentProxy <= int.Parse(To1); CurrentProxy++)
foreach (int s in Ports)
TcpClient Scan = new TcpClient();
try
// If there is no exception then the Port is open
Scan.Connect($"CurrentProxy.From2.From3.From4", s);
Console.WriteLine($"[CurrentProxy.From2.From3.From4] | [s] | OPEN", Color.Green);
catch
// If there is an excpetion then it means the Port is closed
Console.WriteLine($"[CurrentProxy.From2.From3.From4] | [s] | CLOSED", Color.Red);
这段代码运行速度很慢,如果端口关闭,它可能需要长达 10 秒才能检查下一个端口。
我想添加一个 Parallel.For 循环或多线程,但我不确定如何使用此代码来实现。 那我需要什么:
如何使这段代码更快,或者如何添加多线程
【问题讨论】:
【参考方案1】:您可以使用 System.Net.Network Information 命名空间。特别是 IPGlobal 属性类。它可用于返回当前使用的端口的完整列表。
抱歉格式化。我在移动设备上,但这里有一个示例。
var ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
var tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();
foreach (var tcpi in tcpConnInfoArray)
Console.Write($"Port tcpi.LocalEndPoint.Port is in use.");
【讨论】:
以上是关于C# - 带有 IP 地址范围的端口扫描的主要内容,如果未能解决你的问题,请参考以下文章