C#进行端口扫描的源码-创新互联

下面代码内容是关于C#进行端口扫描的的代码,应该是对码农们有一些好处。

创新互联公司是一家以网络技术公司,为中小企业提供网站维护、网站设计、网站制作、网站备案、服务器租用、国际域名空间、软件开发、小程序定制开发等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站电话联系:028-86922220
using System;
using System.Net;
using System.Net.Sockets;
using System.Collections;

namespace PortScan
{
    class Program
    {
        static void Main(string[] args)
        {
            IPAddress ip;
            int startPort, endPort;
            {
                Console.ReadKey();
            }
        }

        #region 从命令行参数 中提取端口 + static bool GetPortRange(string[] args, out int startPort, out int endPort)

        private static bool GetPortRange(string[] args,out IPAddress ip, out int startPort, out int endPort)
        {
            ip = null;
            startPort = endPort = 0;
            if (args.Length != 0 && (args[0] == "/?" || args[0] == "/help"))
            {
                Console.WriteLine("Scan port from startPort to endPort of the host specified by the IPAddress.");
                Console.WriteLine("Command Format:");
                Console.WriteLine("PortScan IPAddress startPort endPort");
                Console.WriteLine("For example:");
                Console.WriteLine("PortScan 127.0.0.1 1 1024");
                return false;
            }
            if (args.Length == 3)
            {
                if (IPAddress.TryParse(args[0],out ip) && int.TryParse(args[1], out startPort) && int.TryParse(args[2], out endPort))
                {
                    return true;
                }
                else
                {
                    Console.WriteLine("参数格式不正确!");
                    return false;
                }
            }
            else
            {
                Console.WriteLine("参数数目不正确!");
                return false;
            }
        }
        #endregion

        static void Scan(IPAddress ip, int startPort, int endPort)
        {
            Random rand = new Random((int)DateTime.Now.Ticks);
            Console.WriteLine("Begin Scan...");
            for (int port = startPort; port < endPort; port++)
            {
                Socket scanSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
                do
                {
                    try
                    {
                        scanSocket.Bind(new IPEndPoint(IPAddress.Any, rand.Next(65535)));
                        break;
                    }
                    catch
                    { 
                    }
                } while (true);

                try
                {
                    scanSocket.BeginConnect(new IPEndPoint(ip, port), ScanCallBack, new ArrayList() { scanSocket, port});
                }
                catch
                {
                    continue;
                }

            }

            Console.WriteLine("Port Scan Completed!");
        }

        static void ScanCallBack(IAsyncResult result)
        {
            ArrayList arrList = (ArrayList)result.AsyncState;
            Socket scanSocket = (Socket)arrList[0];
            int port = (int)arrList[1];
            if (result.IsCompleted && scanSocket.Connected)
            {
                Console.WriteLine("port {0,5}tOpen.", port);
            }
            else
            {
            }
            scanSocket.Close();
        }
    }
}

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:C#进行端口扫描的源码-创新互联
文章URL:http://scyanting.com/article/ehpee.html