现在的位置: 首页 > 综合 > 正文

C# ping 局域网扫描

2013年03月24日 ⁄ 综合 ⁄ 共 1883字 ⁄ 字号 评论关闭

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

namespace 局域网扫描
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }

        private void StartPing(string startIp)
        {
            var myHostIp = startIp;
            var ipDuan = myHostIp.Substring(0, myHostIp.LastIndexOf('.'));
            //枚举网段计算机
            for (var i = 1; i <= 255; i++)
            {
               
                var myPing = new Ping();
                myPing.PingCompleted += _myPing_PingCompleted;
                var pingIp = ipDuan + "." + i.ToString(CultureInfo.InvariantCulture);
                myPing.SendAsync(pingIp, 1000, null);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear(); ;
            StartPing(textBox1.Text);
            //StartPing("202.118.83.23");

            ////获取本地机器名 
            //var myHostName = Dns.GetHostName();
            ////获取本机IP 
            //var hostIps = Dns.GetHostEntry(myHostName).AddressList;

            //var ipv4S = hostIps.Where(ip => !ip.IsIPv6LinkLocal).ToList();
            //var myHostIp = ipv4S[0].ToString();

            ////截取IP网段
            //var ipDuans = ipv4S.Select(ip => ip.ToString().Remove(myHostIp.LastIndexOf('.'))).ToList();
            
            ////枚举网段计算机
            //for (var i = 1; i <= 255; i++)
            //{
            //    foreach (var ipDuan in ipDuans)
            //    {
            //        var myPing = new Ping();
            //        myPing.PingCompleted += _myPing_PingCompleted;
            //        var pingIp = ipDuan + "." + i.ToString(CultureInfo.InvariantCulture);
            //        myPing.SendAsync(pingIp, 1000, null);
            //    }
            //}
        }

        //向ListBox添加扫描出的计算里信息
        void _myPing_PingCompleted(object sender, PingCompletedEventArgs e)
        {
            if (e.Reply.Status == IPStatus.Success)
            {
                var sb = new StringBuilder();
                sb.AppendLine(e.Reply.Address.ToString());
                listView1.Items.Add(new ListViewItem(sb.ToString()));
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var ip=IPAddress.Parse("127.0.0.1");
            for (int i = 90; i < 100; i++)
            {
                var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
                IPEndPoint iep = new IPEndPoint(ip, 3600);
                socket.BeginConnect(iep, new AsyncCallback(Connect), socket);
            }
        }

        void Connect(IAsyncResult ar)
        {
            listView2.Items.Add(ar.IsCompleted.ToString());
        }
    }
}

抱歉!评论已关闭.