唐朝程序员
我来自唐朝
c#初学日记:多线程扫描网络计算机
首先定义一个UpDataList,以后用于创建线程实例
public
delegate
void
UpDataList(
string
sIP,
string
sHostName);
定义一个名叫ping的class,用于计算机的扫描模块
public
class
ping
{
public
UpDataList ul;a
public
string
sIP;
//
接收传递过来的IP地址
public
string
sHostName;
//
向主进程传递计算机名
public
string
sMac;
//
向主进程传递远程主机MAC地址
public
string
sUser;
//
向主进程传递远程主机当前用户
public
string
sHDsize;
//
硬盘容量
public
string
sHDuse;
//
已用空间
public
string
sHDfree;
//
剩余空间
public
void
scan()
{
IPAddress myIP
=
IPAddress.Parse(sIP);
try
{
IPHostEntry myHost
=
Dns.GetHostByAddress(myIP);
//
根据IP获得主机名
sHostName
=
myHost.HostName.ToString();
}
catch
{
sHostName
=
""
;
}
if
(sHostName
==
""
)
sHostName
=
"
no
"
;
if
(ul
!=
null
)
ul(sIP,sHostName);
}
}
扫描数据写入listview中(这部分是在线程中调用的。其中写出时要用lock锁住listView1,不让其它线程写入)
void
UpDataMyList(
string
sIP,
string
sHostName)
{
//
写入扫描数据
if
(sHostName
!=
"
no
"
)
//
主机在线是就写入数据
{
lock
(
this
.listView1)
//
锁住listView1,保证在写入时的独占权
{
ListViewItem listViewItem
=
new
ListViewItem(
new
string
[]
{sHostName,sIP}
);
listView1.Items.Add(listViewItem);
listBox1.Items.Add(
"
扫描
"
+
sIP
+
"
完成
"
);
}
}
else
{
listBox1.Items.Add(sIP
+
"
不在线
"
);
}
}
其中的网段部分考虑以后可以用ini文件等提供,可以由用户自己设想要扫描的内容。现在我自己手工加了4个网段。由扫描10网段为例:
private
void
treeView1_AfterSelect(
object
sender, System.Windows.Forms.TreeViewEventArgs e)
{
if
(e.Node.Text.ToString()
==
"
扫描10网段
"
)
{
listView1.Items.Clear();
//
清空listView1
listBox1.Items.Clear();
//
清空listBox1
//
创建多个线程实例
int
min
=
1
;
int
max
=
254
;
//
min和max定义扫描的范围是192.168.10.1-192.168.10.254
string
Mask
=
"
192.168.10.
"
;
int
threadNum
=
max
-
min
+
1
;
Thread[] myThread
=
new
Thread[threadNum];
for
(
int
i
=
min;i
<=
max;
++
i)
{
try
{
int
k
=
max
-
i;
ping HostPing
=
new
ping();
//
创建一个ping的实例
HostPing.sIP
=
Mask
+
i.ToString();
//
获得一个IP
HostPing.ul
=
new
UpDataList(UpDataMyList);
//
向主线程传送IP地址
myThread[k]
=
new
Thread(
new
ThreadStart(HostPing.scan));
//
初始化一个线程的实例
myThread[k].Start();
}
catch
{
}
}
}
}
如上代码运行后能正常用多线程扫描10网段了。总算完成了一部分
忘记加上初始化listView1的代码了:
private
void
setListView()
{
//
以下为初始化listView1的代码
listView1.View
=
View.Details;
//
设置listView1的显示方式为Details
listView1.MultiSelect
=
false
;
//
禁止选中多行
listView1.Scrollable
=
true
;
//
显示内容超出范围时,允许显示滚动条
listView1.FullRowSelect
=
true
;
//
当项目选中时,同行所有子项都突出显示
listView1.GridLines
=
true
;
//
显示网格线
//
初始化表头
listView1.Columns.Add(
"
电脑名称
"
,
100
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
IP地址
"
,
150
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
MAC地址
"
,
150
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
当前用户
"
,
100
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
硬盘空间
"
,
100
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
已用空间
"
,
100
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
剩余空间
"
,
100
,HorizontalAlignment.Left);
listView1.Columns.Add(
"
扫描时间
"
,
100
,HorizontalAlignment.Left);
}
在form_load事件中调用setListView就可以了
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2006-09-30 21:28
唐朝程序员
阅读(289)
评论(0)
编辑
收藏
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
《福布斯》:谷歌进军硬件产品 难撼动苹果地位
·
美国空军拟最多购买1.8万台iPad 2
·
伊朗封杀Gmail和Facebook等互联网服务
·
分析称专利之争让谷歌苹果两败俱伤
·
Android平台发现新型手机病毒Rootsmart
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
<
2006年9月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
导航
博客园
首页
新随笔
联系
订阅
管理
统计
随笔 - 186
文章 - 0
评论 - 53
引用 - 6
公告
昵称:
唐朝程序员
园龄:
5年7个月
粉丝:
8
关注:
1
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
Ajax(1)
(rss)
Asp.Net(36)
(rss)
Atlas(1)
(rss)
c#(78)
(rss)
JavaScript(6)
(rss)
Sql(23)
(rss)
随笔档案
2010年4月 (2)
2010年2月 (1)
2010年1月 (3)
2009年12月 (2)
2009年11月 (1)
2009年10月 (2)
2009年4月 (1)
2009年3月 (2)
2009年2月 (1)
2008年11月 (2)
2008年9月 (1)
2008年8月 (2)
2008年7月 (2)
2008年6月 (1)
2008年5月 (1)
2008年4月 (1)
2008年3月 (1)
2007年12月 (3)
2007年11月 (7)
2007年10月 (7)
2007年9月 (1)
2007年8月 (2)
2007年6月 (2)
2007年5月 (2)
2007年4月 (2)
2007年3月 (7)
2007年2月 (8)
2007年1月 (34)
2006年12月 (4)
2006年11月 (17)
2006年10月 (27)
2006年9月 (10)
2006年8月 (27)
文章分类
AjaX
(rss)
Asp.Net
(rss)
C#
(rss)
JavaScript
(rss)
RegularExpressions
(rss)
C#
刘铁猛
(rss)
高手啊
休闲
狐库网
请看看!~
鲤鱼网
(rss)
很强的学习资料网站
最新评论
阅读排行榜
评论排行榜
推荐排行榜
Powered by:
博客园
Copyright © 唐朝程序员