需要在任一机器上检测本网其它机器的联网状态
如有必要,可以所有机器上安装辅助程序如实在难以实现,可退而求其次,在某一具体机器上检测本网其它机器的联网状态给出实现原理及核心算法即可。
如有必要,可以所有机器上安装辅助程序如实在难以实现,可退而求其次,在某一具体机器上检测本网其它机器的联网状态给出实现原理及核心算法即可。
解决方案 »
- 蛋疼的SetROP2函数
- 问个tab control 的问题
- 有没有做dialogic语音卡的高手,请教一个关于DTMF来电取码的问题
- mysql c api 处理事务 (急)
- 在VC中如何使用GDI+库
- 问单文档多视图的一种实现方法
- 看见lib中的一个函数就在哪儿,调用的时候却出现LNK2001错误!
- 怎么在Dialogbar上创建一个按钮啊????
- mscomm控件,端口号不能大于16,怎么办?谁知道哪有串口控件下载,或者有串口控件的原码,本人万分感谢!!!
- 想快速发财吗?请访问:http://dtp.51.net/(网络新盈利)
- 弱智问题:如何将"D2CE"转换成0xD2,0xCE?在线等.谢谢
- 怎样判断HttpOpenRequest打开的网页存不存在
1。得到自己IP
2。循环最后部分(0~255)ping
3。检测返回状态即可具体函数查查以前的帖子,都有
这是某大型程序的一个功能块
尽量少占用CPU资源
如果要写辅助程序的话你可以用UDP协议或TCP/IP协议来实现啊
如使用UDP,为满足“实时“的需要,发送数据的时间间隔可能有点小,会不会有数据冲突/丢失?
你可以做一个监测是否连接的头啊,在你规定的响应时间内没有收到的话就认为连接断开了
这个和UDP,TCP/IP没有关系的
UDP传输的效率要比TCP/IP高,但是你自己的校验数据
在局域网内不用考虑那么多了,用TCP/IP已经足够了
程序主线程中使用SOCKET进行联接,拔掉CONNECT方的机器的网线后,程序有时会无法响应用户输入,也不刷新界面,约55秒后恢复正常。但不是每次都有此现象出现。
使用的是MFC的CAsyncSocket派生出的类。
是服务器新开一个特别的 UDP SOCKET专门收取在线信号,同时维护一个在线机器的列表,列表项用一个结构,结构里一个 int ID=x 标志在线机器的ID, 再一个int life=n标志在线机器生命期,一个定时器每1秒对列表里所有客户的life减1,当哪个客户的life的减到0就认为他断线了,从在线列表里删除。
客户通过每一段时间(比如1秒)发送1个UDP信息给服务器,服务器收到这个信息后就把列表里和这个客户对应的ID的life置5,这样客户不断表明在线他的life就不会减到0而被删除,如果客户连续5秒都没发UDP信息给服务器就认为他离线了,不管他是死机了还是被拔了网线还是停电了。
如果没有什么特殊需求的话已经足够用了