/// <summary>
/// Port Scan 2013-01-30 00:36:00
/// </summary>
class Program
{
static string ipAddress;
static int runningThread = 0;
static List<string> portOpen = new List<string>();
static void Main(string[] args)
{
int portSta;
int portSto;
int maxThread = 100;
Console.WriteLine("PortScan");
Console.Write("IP地址:");
ipAddress = Console.ReadLine();
if (!Regex.IsMatch(ipAddress, @"^(?!0{1,3}\.)(?:[01]?\d{0,2}|2[0-4]\d|25[0-5])\.(?:[01]?\d{0,2}|2[0-4]\d|25[0-5])\.(?:[01]?\d{0,2}|2[0-4]\d|25[0-5])\.(?:[01]?\d{0,2}|2[0-4]\d|25[0-5])$")) return;
Console.Write("起始端口:");
portSta = int.Parse(Console.ReadLine());
Console.Write("结束端口:");
portSto = int.Parse(Console.ReadLine()) + 1;
Console.Write("线程数量:");
maxThread = int.Parse(Console.ReadLine());
List<Thread> tArr = new List<Thread>();
for (int i = portSta; i < portSto; i++)
{
Thread thread = new Thread(new ParameterizedThreadStart(AppScan));
thread.Start(i.ToString());
runningThread++;
tArr.Add(thread);
while (maxThread <= runningThread) ;
}
foreach (Thread t in tArr)
{
t.Join();
}
Console.WriteLine("// ----------- Open Port");
foreach (string port in portOpen)
{
Console.WriteLine(" {0} Is Open", port);
File.AppendAllText("portScan.ini", port + " Is Open" + System.Environment.NewLine);
}
Console.WriteLine("// ----------- Finished ");
}
static void AppScan(object o)
{
string portStr = o.ToString().PadLeft(5, ' ');
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(ipAddress), int.Parse(o.ToString()));
Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(ipep);
portOpen.Add(portStr.Trim(' '));
Console.WriteLine("{0} : Open", portStr);
}
catch (Exception ex)
{
Console.WriteLine("{0} : Closed -> {1}", portStr, ex.Message);
}
finally { }
runningThread--;
}
}
解决方案 »
- DirectX编的C#录音文件没有声音
- 我在服务器上挂了个文件夹到IIS上
- treeview和listview
- C# ,object&string -- 小女子请教简单程序
- DataGridView绑定到DataSet时如何控制不让其自动生成列?
- 可动态设置皮肤的WinForm!!
- 一个c#开发的win程序在Xp上可以执行,在2003上不执行,怎么回事
- 这样的功能如何实现?回答问题的都给分!
- 数据存储变换的问题,请高手帮解一下
- 用List<T>做DataGridView 的数据源时,如何查询被修改的对象?
- C#控制线程开始,暂停,和结束,用Suspend 和用AutoResetEvent控制,有啥区别
- 找的一个C#方法用于批量处理图片缩放,内存不足问题。
线程方面呢?也给点意见呗,谢谢(主要想测试这个来着)
没必要很多线程一个去掉cmd 用s.exe去扫描然后回调取代理