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