我试图制作端口扫描器,但由于某种原因,它效果不佳:
代理列表:
138.68.169.8
Run Code Online (Sandbox Code Playgroud)
我的代码:
private static string IP = "";
static void Main(string[] args)
{
UserInput();
PortScan();
Console.ReadKey();
}
private static void UserInput()
{
Console.WriteLine("IP Address:", Color.Lime);
IP = Console.ReadLine();
}
private static void PortScan()
{
Console.Clear();
TcpClient Scan = new TcpClient();
foreach(int s in Ports)
{
try
{
Scan.Connect(IP, s);
Console.WriteLine($"[{s}] | OPEN", Color.Green);
}
catch
{
Console.WriteLine($"[{s}] | CLOSED", Color.Red);
}
}
}
private static int[] Ports = new int[]
{
8080,
51372,
31146,
4145
};
Run Code Online (Sandbox Code Playgroud)
例外:
[8080] | OPEN
[51372] | CLOSEDSystem.Net.Sockets.SocketException (0x80004005): A connect request was made on an already connected socket
Run Code Online (Sandbox Code Playgroud)
其他端口也有相同的例外。
当 proxy:port 不同时,为什么它说打开端口?
在已连接的套接字上发出连接请求
该错误消息意味着您已经建立了一个连接,并且您正在尝试使用同一个客户端建立另一个连接。在打开另一个连接之前,您应该关闭第一个连接。
我会将它移动TcpClient到using循环中的一个块中,以便关闭连接并在连接尝试之间处理客户端:
foreach(int s in Ports)
{
using (TcpClient Scan = new TcpClient())
{
try
{
Scan.Connect(IP, s);
Console.WriteLine($"[{s}] | OPEN", Color.Green);
}
catch
{
Console.WriteLine($"[{s}] | CLOSED", Color.Red);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5041 次 |
| 最近记录: |