判断局域网内其他机器是否开机?

a2212 2011-09-17 12:43:56
大侠们,我现在想编写一个软件判断局域网内的其他主机是否开机,现在已知它们的IP。
我的思路是:ping这个ip,如果ping的通,就认为是开机的,如果ping不通则认为是没有开机的。
首先:我想知道 这个思路可不可行?因为ping不通的原因很多,比如防火前或者其它原因。
其次:如果可行的话,那么当ping不通的时候,是否有办法判断原因并显示给用户呢?
我的意思是,如果ping不通,是否可以判断到底是因为防火墙的组个还是硬件的问题,还是根本没开机等等原因。
...全文
384 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zw1270644192 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rocklee19870608 的回复:]
同学习,友情帮顶。。。
[/Quote]
++
w250829594 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zw1270644192 的回复:]
引用 1 楼 rocklee19870608 的回复:
同学习,友情帮顶。。。

++
[/Quote]
C++++=C#
guoqujianglaishi 2011-09-19
  • 打赏
  • 举报
回复
其实你可以从客户端想想办法啊,让你的客户端随机启动,一旦启动成功第一件事就是向服务器端报告自己已上线,这样你不仅知道了客户端开机了,而且知道客户端运行了。
a2212 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jackson35296 的回复:]

引用 8 楼 a2212 的回复:

引用 7 楼 jackson35296 的回复:

这个无解,你没法判断是否开机。除非你强制其他机器安装一个客户端,和你的服务端通信。光靠ping命令或arp命令是没用的。
首先,他如果拔了网线,你还知道他是否开机吗?或者是禁用网卡。
还有一点,用防火墙封掉所有的IP和端口,和拔了网线的效果一样的。

总之,如果你的机器和他的机器是一个对等的……
[/Quote]

朋友!我觉得你相当专业!
你越说我越觉得思路清晰!可是……也越难啊……………………………………
谢谢啦!!
a2212 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bokutake 的回复:]

你可以让客户端主动发送自己alive的消息,而不是去被动检测。
[/Quote]

这个我考虑了,让客户端每隔4、5秒发一个信号给我,并且软件被关闭时也发一个关闭信号给我。根据情况的不同判断。

但是……唉,现在的情况客户端的数量是比较多的,100多也有可能。所以我一开始才会想到ping这个主意……
像我这样的菜鸟是不是不应该弄这么难的东西啊?哈哈
a2212 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bokutake 的回复:]

不能,你不可能区分开机未运行软件和被防火墙阻止这两种情况。
因为这两种情况下对方都可能ping通,但是对应端口还是无法通信。
[/Quote]

也就是说这两种情况都是一样,并且用任何方法都判断不出来是么?
其实我的目的很简单
1:测试是否开机
2:如果开机测试是否运行着客户端

呵呵……看来只是说起来很简单……
努力吧……!
a2212 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jackson35296 的回复:]

这个无解,你没法判断是否开机。除非你强制其他机器安装一个客户端,和你的服务端通信。光靠ping命令或arp命令是没用的。
首先,他如果拔了网线,你还知道他是否开机吗?或者是禁用网卡。
还有一点,用防火墙封掉所有的IP和端口,和拔了网线的效果一样的。

总之,如果你的机器和他的机器是一个对等的角色,你就无法了解他的机器。除非你有更高的网络权限,比如你能够进入路由器或交换机,可以从路由器和交……
[/Quote]
其实是这样的,我最终的目的是想判断指定IP主机上是否运行着指定的一款软件(可是理解成客户端)。那么现在就有这样几种情况:
1、运行着———这样我能得到正确的结果。
2、开机但是未运行
3、未开机或者防火墙阻止等其他原因
————2、3这两个情况我需要进行区分

您说的强制其它机器安装客户端,现在我就是要判断这样的一个客户端是否被人(不法分子……呵呵)关闭了。并且我要实时的监控,至少要每隔4、5秒就要测试一次。
jackson35296 2011-09-18
  • 打赏
  • 举报
回复
这个无解,你没法判断是否开机。除非你强制其他机器安装一个客户端,和你的服务端通信。光靠ping命令或arp命令是没用的。
首先,他如果拔了网线,你还知道他是否开机吗?或者是禁用网卡。
还有一点,用防火墙封掉所有的IP和端口,和拔了网线的效果一样的。

总之,如果你的机器和他的机器是一个对等的角色,你就无法了解他的机器。除非你有更高的网络权限,比如你能够进入路由器或交换机,可以从路由器和交换机入手来解决。
wltg2001 2011-09-18
  • 打赏
  • 举报
回复
2、开机但是未运行
3、未开机或者防火墙阻止等其他原因
————2、3这两个情况我需要进行区分
========
基本区分不了。
jackson35296 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 a2212 的回复:]

引用 7 楼 jackson35296 的回复:

这个无解,你没法判断是否开机。除非你强制其他机器安装一个客户端,和你的服务端通信。光靠ping命令或arp命令是没用的。
首先,他如果拔了网线,你还知道他是否开机吗?或者是禁用网卡。
还有一点,用防火墙封掉所有的IP和端口,和拔了网线的效果一样的。

总之,如果你的机器和他的机器是一个对等的角色,你就无法了解他的机器。除非你有更高的……
[/Quote]


如果是允许客户端安装软件的话,也很好弄,可以重写windows登录验证那部分,同时在后台跑一个服务。启动windows后,你的登录验证接管了以前的用户名密码验证。界面把用户名和密码发给服务,后台服务再将用户名,密码发给服务器验证,验证不过的,不允许登录windows。说简单点,就是写个类似网吧登录管理工具,这样可以确保用户登录后才能进入windows。

要确保用户在线,可以让客户端每隔5秒向服务器发一个心跳,连续3次检测不到心跳,就认为掉线了。客户端不要单单是个前台的exe,应该由登录界面的dll,前台管理界面exe,后台服务,底层驱动4个部分组成。驱动,服务可以互相确保在线。驱动也可以写个hook来防杀进程。发现客户端非法关闭服务后,驱动可以抛一个异常,让电脑蓝屏。
辰岡墨竹 2011-09-18
  • 打赏
  • 举报
回复
你可以让客户端主动发送自己alive的消息,而不是去被动检测。
辰岡墨竹 2011-09-18
  • 打赏
  • 举报
回复
不能,你不可能区分开机未运行软件和被防火墙阻止这两种情况。
因为这两种情况下对方都可能ping通,但是对应端口还是无法通信。
lijianli9 2011-09-17
  • 打赏
  • 举报
回复
写个软件,发送广播,每个电脑都装上。
这不是鸭头 2011-09-17
  • 打赏
  • 举报
回复
SendARP
rocklee19870608 2011-09-17
  • 打赏
  • 举报
回复
你把回显ICMP报文抓下来,分析一下其“代码”字段,或许可以找到你想要的结果。。。我也在研究之中,不知道可行与否。。。
  • 打赏
  • 举报
回复
每个机器上装一个客户端 定时发送报文 如果在给定的时间内没收到则认为没开机
a2212 2011-09-17
  • 打赏
  • 举报
回复
我在百度上查了很多资料,关于ping不通的原因的。
1、硬件连接问题
2、TCP/IP协议的问题
3、防火墙等软件的设置
4、如果设置了VLAN,可能不在同一个VLAN内
5、启用了IP安全策略防ping
6、也许还有其他原因……小人真的不知道了

ping过之后是否会由于不通的原因能得到不通的结果?
各位大侠,帮帮小人吧!!
rocklee19870608 2011-09-17
  • 打赏
  • 举报
回复
同学习,友情帮顶。。。
网络基础知识大全 1 网络常用基础知识: 3 1)如何查看本机所开端口: 3 2)如何获得一个IP地址的主机名? 3 3)如何查看本机的ip地址? 3 4)再使用net命令的时候遇到一些错误代码,如何查看对应的错误信息? 4 5)利用telnet连接到对方主机上,想获得一些系统信息,用什么命令? 4 6)跟踪路由器的命令是什么? 4 7)简单介绍一下cookie! 4 8)安装2000的时候,速度会特别特别特别慢,怎么加快安装速度呢? 5 9)Windows2K密码忘记了,如何才能进入系统? 5 10)ping不到,tracert不到,但是却能用nbtstat显示对方的一些信息,为什么? 5 11)telnet上去后,如何给对方开共享? 5 12)如何判断对方的具体操作系统版本? 5 13)如何查看98的随机启动的程序? 6 14)设置了BIOS密码,可是却忘记了,该怎么办? 6 15)如何自制一个让98蓝屏的炸弹? 6 16)如何再命令行下杀死对方进程? 7 17)上次说了ping的基本用法,这次谈谈ping的命令参数! 7 18)如何查看本机的DNS服务器? 8 19)肉鸡上的部分文件无法删除,怎么办? 8 20)再说一个可以限制用户登陆时间的命令! 8 22)如何删除windows2K的默认贡献? 8 23)139端口的又一用法 9 24)利用批处理文件来建立一个记录3389登陆者信息的记录器 10 25)网络命令小节 10 26)这里我必须(或者说不得不重新重申一个命令!不过说之前我要把这个命令的相关命令稍微介绍一下!) 12 27)关于双系统的两个问题: 12 28)这里说几个主页恶意代码:『并不是让大家把这些代码加入到自己的主页中!只是希望大家能了解恶意代码,起到更好的防护作用!』 13 29)系统自带的系统工具 14 30)批处理在入侵中的几则妙用! 15 31)再说几个非常简单实用的DOS命令(工具): 15 32)ping命令的其他技巧: 17 局域网应用问题专题解答 (Rayi々) 18 1、问:我访问局域网中的计算机时,为什么常常被提示要输入用户名和密码? 18 2、问:上网浏览前在局域网中应如何对IE进行设置? 18 3、问:在局域网中应如何设置OutLook Express收发邮件? 18 4、问:在由三台电脑组成的局域网中,我在其中一台电脑上用过Windows优化大师后,为什么这台电脑就不能登录网络,并且还提示找不到拨号适配器? 18 5、问:如何在局域网中设置QQ、ICQ等即时通讯软件? 18 6、问:我想用NetMeeting进行局域网中的通话,应该如何设置? 19 7、问:我知道在局域网内文件是可以共享的,但我想问的是,打印机和扫描仪应该如何共享? 19 8、我用分机线上网,上网速度最大才48000bps,请问是何原因? 还有,将Modem放在主机箱侧面,开机后(未打开Modem电源),家里的电话就处于忙音状态,如何解决? 19 9、我新购的网卡在电脑上无法安装,而在其他电脑上却使用正常,这是怎么回事? 19 10、我的电脑出现“网上邻居”中找不到其他联网电脑的故障,如何解决? 20 11、问:公司局域网,只有一台机器通过猫接入互联网,现想其他机器接入互联网,请问如何实现? 20 12、问:局域网通过路由器、使用ADSL方式上网,如何使各工作站快速的获得可以上网的IP地址而不手工去指定? 20 13、问:公司要组建局域网,需要用到邮件服务器和WWW服务器,请问这两种服务放到一台电脑里还是分别用两台电脑?都用什么软件?谢谢! 20 14、问:家里原先有一台PII的计算机,最近又新增一台P4机器,操作系统都为Windows 98且已安装网卡,现在我想把他们联起来共享资源,该怎么办? 20 15、问:办公室机器桌面的“网上邻居”图标没了,能上Internet,但无法浏览其他机器上的资源了,怎么办? 21 16、问:办公室机器桌面的网上邻居图标解决了且也能浏览其他机器的共享资源了,但发现右键中的“共享”命令没了!怎么办? 21 17、问:右键中的“共享”命令已经显身!但我设了共享不想让别人从网上邻居中看到这个共享目录,只有自己知道且能实现异地机上有完全操作的权限。 21 18、问:一块PCI总线的10/100自适应网卡,无法正常工作。主要表现在网络时断时续,不管是不是Ping自己的IP地址,还是Ping对方的IP地址,都有这种情况发生。查看网卡的指示灯也出现同样的现象。 21 19、问:我的电脑与一个对等网连接好了,但不能读别人电脑上的数据,这是怎么回事? 21 20、问:我的网络从集线器升级为交换机后,感觉速度并没有多大提高,是什么原因? 22 21、问:VLAN是什么意思,使用它有什么好处? 22 22、问:我的自适应网卡只有红灯闪烁,绿灯不亮,这种情况正常吗? 22 23、问:如何使用交换机的UpLink端口,怎样连接?使用了UpLink口后,是否还可以使用其相邻最近的端口? 22 24、问:我在安装网卡后,在“系统→设备管理器”中网卡出现黄色的“!”号,请问该如何解决? 23 25.问:ADSL上网网页打不开的问题? 23
PerCDM2013的实现的全部 (2012年2月14日12:57:53 改名为PerCDM2013) 2013年1月27日20:07:48 PerCM2013是我对PerCM系列软件的重写,计划利用1月27日至2月4日这段时间进行设计实现。因为手头还有一个警报发放系统需要完工,所以选择了一直在使用的C#系列进行实现。为了强化前一段时间所做的努力,需要有“项目系统分析”,对技术的选择也要能够大胆有规划。这样,几个软件实现之后,才能够全面地提高能力。 需要研究的技术以下几类 1、现有的代码管理软件的组织构造,自己合理联想; 2、ICSharpCode.TextEditor的重新研究,加速合成; 3、sqlite数据库的使用; 4、自动更新技术的研究; 5、界面库的引入。 立刻行动起来吧! 对陈灯代码管理软件的分析: 这个软件的最大的体会就是“该实现的都已经实现了”。具体以下几点: 1、代码录入模块,可以快捷键进行,其实按照“代码语言”“代码分类”和“关键字”三类就可以区分代码; 2、代码查阅模块,可以查看“最近入库”的和“最近使用”数据,并且数据的查阅方法,非常好。 3、广告,可以一样的方式来打; 4、导入导出代码库其实是一个隐形的亮点,这个系统的数据融合是非常好的;可以加上数据库加密的方法; 5、许多东西都可以设置 包括数据库位置、密码、热键、开机是否启动等等。这里的安全操作密码是为了防止错误删除,可以采用。 2013年1月28日8:36:36 主要界面分为三个部分,一个是数据的获取,一个是数据的查阅(模仿陈灯),此外还包括一个配置界面。采用统一的标准的界面配置,加上一些个人控件的小玩意,保证高效和美观。 2013年1月29日8:12:54 这个程序,玩的就是数据库。在目前时间紧张的情况下,我把零散的时间集合起来,研究一下sqlite. 发现有一个现成的库可以来引用“SQLite ADO .NET”; 2013年1月30日7:35:54 SQLite ADO .NET的引入非常简单,直接把.dll引入,让命名空间来调用就可以了。但是,相比较用的很习惯的sqlserver,这个调试起来还是复杂了一点。 现在编写这种带数据层的代码,已经比较有经验了。 2012年2月2日11:18:37 即使是很简单的功能,也可能需要长时间的编写。积累就因此非常的重要。 而且有一点,我一定不要忘记,那就是我现在所编写的代码,都是高层的代码,也就是说,没有杀手锏。但是方法是相同的,总结是相通的,这一点一定要铭记在心。 2012年2月14日12:52:26 这里有一点启示:即使是那些司空见惯的功能,去实现也可能会耗费相当长的时间。这里,对于软件的积累就相当重要了。 我对未来这个PERCDM的规划,从自己的需求开始: 1、要能够完全实现通过分析程灯那个软件得出的东西; 2、稳定大方,特别是代码高亮的那个地方; 3、具备codelibary的那种管理附件的功能; 4、具备局域网管理功能,为未来应有于内网服务。 5、能够有专门的用来写文档的地方,不一定会很完善,但是有开始,软件的名称也改变为 perCDM 不去做的事情:、 1、类似word的这种复杂文档控制; 2、robbing,界面是要简单; 3、高强度的复制。 2012年2月15日8:34:12 对于几个问题的研究: 1、如何实现附件的功能? 现有的系统都是放到数据库中(而不是存放文件路径),这个样子可以保证系统的高度整合。其中使用sqlite的那个系统将文件(可能还有其他的什么东西)放到了一个单独的数据库文件中,是值得借鉴的。 2、CINtanotes的实现可以汲取的地方 这个样式是我一直想实现但是实现不了的。但是确实很重要,可能还是要多问人,合理利用资源; 注意它的那些搜索的小物件,在大体实现的基础上,这些细节就是专业的开始。 数据库设定 有岂止是复杂一点两点。很多东西现在是没有办法理解是为什么的,但是这证明即使是看起来很简单的东西,也可能有复杂的原理,不可小视。 这里还有一个类似的实现了的软件。 需要注意的是,这种全本浏览的方式,也可能是整理的方式,也是我所需要的,就是能够对自己所掌握的知识进行一个系统的整理,这个目前不去实现。 如果简化成为这样一个状态,perCDM不但可以搜索代码,而且可以同时搜索输入的文档(甚至文档就写作在其中),我想可以首先从简单的模式去实现,这是一个我需要的模式。 3、文档模式,对apose进行了初步的分析。这个收费软件想使用起来需要更多的研究; 4、备份,导入导出以及网络热备 热备是备份的升级。首先从本机备份开始来做。 这个需要数据库中有相关设定,时间等,我相信自己能够完成,还有对时钟的控制,这个热备也是需要的; 那么导入导出,就需要使用到GUID,可能还不止一个数据库。 网络热备,我更倾向于建立服务器,基于我比较扎实的网络通行模型,实现这样的一个系统。 2012年2月18日18:59:41 随着编写几个类似程序并且不断总结反思,的确在winform程序编写的能力上有了一定的提高,对于解决问题,开始有了独立的思考。但是必须认识到自己所处于的不利状态,所以集聚所有的资源,去开发一个有用好用的程序非常重要。 测试是非常重要的。测试不仅包括可以使用的测试,也应该包括是否好用的测试和能否达到目的的测试。 在使用和测试之间,如何去取得平衡?我这里需要不断地对代码进行重构,并且做出有足够挑战价值的工作。 经过一段时间的修改,现在代码很糟糕,是到了改对其进行修整的时候了。好看的代码,将是更为宝贵的财富。更何况这里编写的是用于资料统计的工具了? 进行重构的时候,发现自己还是有想法的。的确创新不是无本之源,艰苦的工作是一定创造所需要的。 2012年2月19日20:53:12 今天对于控件的研究上了一个新台阶,回首逐渐实现这个想要的效果的过程,感到很充实。首先是经过多方面的资料搜集,才发现flowpanel可以实现我所需要的效果。然后是基于以前的自定义控件编写基础,写出了能够解决一定问题的控件。然后是不断精益求精,现在在现实效果上面已经差强人意了,缺乏的是效率问题,这个需要继续研究。 现在看来,自定义控件的确是一个解决许多问题的方法,现在能够把click事件都统一的处理起来,程序已经逐渐像样子了。这个记忆比较深刻,应该是忘不掉了,这其实也就教育自己:去追求,才能够有收获。下一步是数据的融合问题。送自己一句话:“不要让这个世界的复杂性阻碍你前进,要成为一个行动主义者”。需要做的实在是太多了,立刻行动吧。 2012年2月26日21:55:32 上个周末回了次盱眙,这几天工作冲突太大,而且手头出现了一个复杂的webapp,现在不是很在状态。但是设计需要继续做下去,只有顶住了,坚持住了,才可能会获得进步。 现在需要解决的是热备问题。热备两个思路,一个是直接把.db拷贝过去,一个是在数据库中设定“dirty”位,定时对所有”dirty”进行处理。两者相比,前者低效但是易行后则较难实现一点。通过一定的实验,发现数据库使用过程中,.db是可以被拷贝的,而且速度不慢。所以首先采用第一种思路。 这里就需要写percmserver,白手起家,如何开始?还是需要循序渐进,首先从最简单的开始。后期,可以将这个服务器设计成多用户的(那就是另一个话题),首先需要把网络的机制引入进来,并发现和解决问题。由于是局域网内文件传输,所以先采用udp的方式(如果我采用第二种方法,可以配套采用tcp的方式)。那么问题分解如下: 1、局域网udp传输文件; 2、加入一些东西,判断当前数据库是否需要被热备(一般来说是时间) 3、如何从服务器将被热备的数据库拷贝回来(比如我换一个机器); 2012年2月29日8:02:30 现在基本把“热备”的机制加入了进去,但是由于对热备的机制认识不是很全面,所以可能没有完全实现这个功能。我认为现在是需要把这个程序拿出来,给更多的人使用,进行发现问题的时候了。 2013年3月24日 10:29:36 利用休假的最后时间把这个软件在网络上发布。想获得许多人的认同是困难的,但是至少这里有一个开始: 代码收录界面: 代码搜索界面,使用了较多的自定义控件: 丰富的配置界面: 具备热备功能: 好了,就是这些。我希望这个软件能够给大家的日常工作或者学习带来方便。需要代码或者有问题讨论,请邮jsxyhelu@gmail.com,一定给出满意答复! Jsxyhelu 二〇一三年三月二十四日 10:41:21

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧