VB定刷新检测局域网机器

有机器A与机器B,当机器B开机时,执行某具体代码,反之,当机器B关机时执行另条代码~!
注:局域网所有ip地址已知
思路:
if 机器B = 关机 then
msgbox "关机"
else
msgbox "开机"
endif
问题:
如何快速刷新检测是否开关机,就如QQ,当好友上线与下线时自动提示,如用time控件,怎么提高速度,需要1秒检测上几十机器,或者用其它方法,不用time控件?
友情提示:
如不能给出比较准确答案的请不要回复,如要分,直接联系我,送你就是了~!

可以用类似PING的方法,如果通则是开机ELSE关机。这样的方法检测速度就看代码的执行速度了。这样的方法跟扫描一样,扫描一个IP段是需要一定的时间的。

其实有更快的方法:每台机器都安装一个CLIENT,本机安装成SERVER。CLIENT一运行自动向SERVER发送一条数据,这时不管是几十台还是几百台,SERVER就可以在1秒钟之内检测到这些机器是否是开机状态(美萍、万象都是这样的方法)。其实QQ也是这样的方法:当用户上线或者下线时,根据用户的个人设置是否向所在的所有好友发送上线或者下线的提示,然后好友在根据自己的个人设置是否接收这样的自动提示。。

以上只是我的个人思路 :o(∩_∩)o... ~~至于用哪种方法看你自己的选择了。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-03
恩,我觉得应该在待检测的机器上按上某个“发送器软件”,当然这个软件是你自己编的,当开机时自动启动此软件,此软件通过Winsock向主机器发送信息。当然这些信息包含了待测机器的信息。这样就可以通知其是否开机了,而不用TIMER控件那样时时检测,那样效率很差的。
关机的时候的检测也很简单,此软件一直在后台运行,当此软件被手工关闭退出时,则此软件执行关机代码,并向主机器发送已关机信息。当此软件是由于系统关闭而退出时,直接向主机器发送关机信息。。
第2个回答  2008-11-10
1、如果你有权限就给每个机器装个服务端,自己机子装个客户端。用winsock控件定时想客户端发送标志数据。如果没有收到就表示下线了。
2、如果没有权限,就要扫描所有ip,类似ping命令,没有数据返回表示下线。
第3个回答  2008-11-03
用Winsock向目标主机发起连接请求,目标端口可为139端口(一般情况下139端口开启是由于NetBIOS网络协议的使用,也可以用其他更为可靠的端口),连接成功即为开机。
考虑到速度问题,最好用Winsock数组控件对多个IP同时发送请个(即多线程方式连接)
第4个回答  2008-11-03
思路:
定时枚举局域内的机器。如果B存在的话.执行某代码,如果不存在。执行另外的代码。

VB定刷新检测局域网机器
可以用类似PING的方法,如果通则是开机ELSE关机。这样的方法检测速度就看代码的执行速度了。这样的方法跟扫描一样,扫描一个IP段是需要一定的时间的。其实有更快的方法:每台机器都安装一个CLIENT,本机安装成SERVER。CLIENT一运行自动向SERVER发送一条数据,这时不管是几十台还是几百台,SERVER就可以在1秒...

VB如何判断局域网内,指定的机器是否开机。
一:路由器上的接口有对应的指示灯,对应的灯亮就表示对应的机器开机。二:用鼠标对着你要复制的文件右击出现菜单。选择:复制”,然后打开你指定的文件夹,在文件夹右击出现菜单,选择粘贴,就这样。

VB如何判断局域网内机器是否开机
Public Function Pings(strMachines As String) As Boolean aMachines = Split(strMachines, ";")For Each machine In aMachines Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & machine & "'")For Each ob...

VB查看局域网在线主机
Private Const INADDR_NONE As Long = &HFFFFFFFF Private Const PING_TIMEOUT As Long = 500 Private Type ICMP_ECHO_REPLY Address As Long status As Long RoundTripTime As Long DataSize As Long DataPointer As Long Data As String * 250 End Type Private Declare Funct...

查看局域网计算机ip的VB代码
#1 Do While Not EOF(1)Line Input #1, tmpstr If Left(tmpstr, 10) = "Reply from" Then tmpA = Split(tmpstr)MsgBox "主机IP:" + Left(tmpA(2), Len(tmpA(2)) - 1)Exit Do End If Loop If EOF(1) Then MsgBox "未检测到主机"Close #1 Command1.Enabled = True End Sub ...

VB知道局域网计算机名,ping是否在线。
知道对方ip查看对方的计算机名 方法: 开始->运行->cmd->nbtstat -a 对方ip 开始->运行->cmd->net view 对方ip 知道对方计算机名查看对方ip 方法:开始->运行->cmd->ping 对方计算机名 或者 开始->运行->cmd->nbtstat -a 对方计算机名 ...

VB如何判断局域网是否连通
加一个winsock控件 用 Winsock1.connect [远程主机IP,远程端口] 语句探测 SQL的端口默认是1433

VB代码怎么快速判断局域网共享文件可否连接并打开
最简单的方法是用 on error resume next 忽略错误,简单快捷。先判断反而效率不高,因为检测共享是否存在是需要等待目标电脑反馈的,这个需要时间。实在想判断,可以用cmd命令中的net view,或者只检测是否开机用ping

在局域网内,怎么知道别的计算机的开机或者关机?用vb怎样识别?
ping包实际上就是一个ICMP回显报文,你先建立一个原始套接字(socket),在在上面抓包分析就可以了,你还是看看TCP\/IP协议详解吧,上面有ICMP报文的格式,有了报文格式还不能识别ping命令返回么?判断局域网里主机的开关机状态不是很好办,因为这完全依赖与网络环境,网络出现故障时也会显示为关机状态,你...

...vb.net 怎么判断 网络是否连接 和取本机局域网IP和互联网IP_百度知...
可以区别本地地址和网络地址、ip6地址。你获取索引为0的ip,不一定是正确的网络地址,它有时顺序在中间,在后面。应该获取所有ip,再通过ip地址簇类型区分 判断连接本身有一个函数,不过有时没联网也是真。可以用ping,ping百度、ping访问速度快、不经常维护断线的网络主机。

相似回答
大家正在搜