程序功能如下:
1,我已知一个网段如:192.168.0.***这个网段
2,我要对这个网络内的所有机器扫描,返回每个IP对应的Aliases
问题如下:
1,我使用System.Net名称空间下的控件,但是不知道怎么给IPAddress赋值
2,我做的程序思路如下
for(i=0;i<256;i++)
{    //扫描并显示 每个IP对应的Aliases   }关键问题:我不知道如何给IPAddress赋值,程序很简单的,我看MSDN也没有找到如何给IPAddress进行赋值!所以问一下大家有哪些方法能实现这个功能!
很诚挚的求教!
谢谢每一位回帖的朋友了先!

解决方案 »

  1.   

    这个很简单 但是必须使用多线程序 不然的话爆慢
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.Net.NetworkInformation;
    using System.Drawing.Imaging;
    using System.Net;namespace 多线程
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            Ping p = new Ping();
            int[] success = new int[256];
            int[] time_out = new int[256];
            int ss = 0;
            int tt = 0;
            int jj = 0;
            int y = 5;
            int stop;
            int start;
            int timeout;
            DateTime qs,zz;        public void scan(object s)
            {
                CheckForIllegalCrossThreadCalls = false;
                string[] ip;
                if (p.Send(s.ToString(), timeout).Status == IPStatus.Success)
                {
                    ip = s.ToString().Split('.');
                    success[ss] = int.Parse(ip[3]);
                    ss++;
                    jj++;
                }
                else
                {
                    ip = s.ToString().Split('.');
                    time_out[tt] = int.Parse(ip[3]);
                    tt++;
                    jj++;
                }
                if (jj == stop - start)
                {
                    Thread.Sleep(1000);
                    gdi();
                    label7.Text = "响应:" + ss.ToString();
                    ss = 0;
                    tt = 0;
                    jj = 0;
                    y = 5;
                    zz = DateTime.Now;
                    label5.Text = "终止:" + zz.ToLongTimeString();
                    TimeSpan ts;
                    ts = zz.AddSeconds(1) - qs;
                    label6.Text = "用时:" + ts.ToString().Substring(0, 8);
                }
            }        public void gdi()
            {
                Bitmap b = new Bitmap(320, 320);
                pictureBox1.Image = b;
                Graphics g = Graphics.FromImage(b);            Font f = new Font("宋体", 9F);
                SolidBrush text = new SolidBrush(SystemColors.ControlText);
                SolidBrush lime = new SolidBrush(Color.Lime);
                SolidBrush red = new SolidBrush(Color.Red);
                for (int i = 1; i < 17; i++)
                {
                    g.DrawLine(new Pen(Color.Gainsboro), 0, i * 20, 320, i * 20);
                    g.DrawLine(new Pen(Color.Gainsboro), i * 20, 0, i * 20, 320);
                }            for (int i = 3, j = start; (i < 320) & (j < stop); i = i + 20, j++)
                {
                    foreach (int ii in success)
                    {
                        if (j < 100)
                        {
                            if (ii == j)
                            {
                                g.DrawString(j.ToString(), f, lime, i, y);
                                if (i == 303)
                                {
                                    i = -17;
                                    y = y + 20;
                                }
                            }
                        }
                        else
                        {
                            if (ii == j)
                            {
                                g.DrawString(j.ToString(), f, lime, i - 3, y);
                                if (i == 303)
                                {
                                    i = -17;
                                    y = y + 20;
                                }
                            }
                        }
                    }
                    foreach (int ii in time_out)
                    {
                        if (j < 100)
                        {
                            if (ii == j)
                            {
                                g.DrawString(j.ToString(), f, text, i, y);
                                if (i == 303)
                                {
                                    i = -17;
                                    y = y + 20;
                                }
                            }
                        }
                        else
                        {
                            if (ii == j)
                            {
                                g.DrawString(j.ToString(), f, text, i - 3, y);
                                if (i == 303)
                                {
                                    i = -17;
                                    y = y + 20;
                                }
                            }
                        }
                             
                    }
                }
                pictureBox1.Refresh();
                g.Dispose();
            }        private void button1_Click(object sender, EventArgs e)
            {
                string[] ip = new string[stop];
                Thread[] t = new Thread[stop];
                for (int i = start; i < stop; i++)
                {
                    ip[i] = textBox1.Text + "." + textBox2.Text + "." + textBox3.Text + "." + i.ToString();
                    t[i] = new Thread(new ParameterizedThreadStart(scan));
                    t[i].Start(ip[i]);
                }
                qs = DateTime.Now;
                label4.Text = "启始:" + qs.ToLongTimeString();
            }        private void button3_Click(object sender, EventArgs e)
            {
                this.Close();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                IPHostEntry myHost = new IPHostEntry();
                myHost = Dns.GetHostByName(Dns.GetHostName());
                string ip = myHost.AddressList[0].ToString();
                string[] str = ip.Split('.');
                textBox1.Text = str[0];
                textBox2.Text = str[1];
                textBox3.Text = str[2];            start = int.Parse(textBox4.Text);
                stop = int.Parse(textBox5.Text) + 1;
                timeout = int.Parse(textBox6.Text);
            }        private void textBox5_Leave(object sender, EventArgs e)
            {
                stop = int.Parse(textBox5.Text) + 1;
            }        private void textBox4_Leave(object sender, EventArgs e)
            {
                start = int.Parse(textBox4.Text);
            }        private void textBox6_Leave(object sender, EventArgs e)
            {
                timeout = int.Parse(textBox6.Text);
            }
        }
    }