如何得知用户 拔开网线 了?(50分)

  • 主题发起人 主题发起人 nzfsoft
  • 开始时间 开始时间
肯定是一个服务发出的消息
 
大富翁来之不易<br>无用的话请不要乱讲(包括我这句话)<br>又占用不少空间
 
知道了。谢谢批评、
 
我发现MSN也可以发现网线被拔了,
 
nzfsoft 请清除掉你那个顶字吧。<br>Windows 中使用了低层的一个接口,不是定时检测。<br>这个接口我在 VC++ 代码库见过,由于自己觉得没什么用,就没有保留代码,<br>你可以查 MSDN 和 MS 新闻组。
 
感谢小雨。我也知道肯定有类似代码与函数。但就是找不到呀。。
 
我说了,请你清掉那个“顶”字。你好象很不以为然。<br>看看左轻侯的 img2char.exe 你就不会拿这东西来玩了。
 
关注<br>MSN QQ(连接方式为:直接上网)<br>手上没有2k下拦截数据包工具,没试过是否通过发送数据取得是否联线
 
如何得知用户 拔开网线,的目的就是为检测是否网通的话,不妨时不时的PING一下服务器的地址<br>看INDY中有PING的例子
 
活化石:<br>ping能得知是否联线,但不是解决问题的根本(不过也有可能没有其它办法,至少目前<br>我不知道),因为如果碰巧所ping服务器禁止了icmp,ping的结果永远是连不通;<br><br>小雨哥:能找找看吗,谢谢
 
但根据平时的作法,在局域网中常用办法都是靠PING测试通讯的<br>PING服务器地址看网通否<br>PING本地地址,看网卡坏否.<br>呵呵,还是帮你UP吧<br>
 
如果要用Ping....就是最没有办法的办法了呀。。。但不是想要的。。。
 
呵呵,我怎么会不知道这个 API ?只是看着楼主那个顶字不舒服。:-)<br>现在他删掉了就非常好。这个函数是 RasConnectionNotification 。<br>首先使用 CreateEvent 函数创建 Ras Connection Event 事件,这个事<br>件对象一旦被建立,我们就可以使用 WaitForSingleObject 函数等待 Ras<br>Connection 事件的发生。MSN 就是用了这个 API 。MSDN 上可以查到,<br>我这里给出这个函数 API 说明的链接:<br>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/rras/rasconnectionnotification.asp
 
更正一下:如果需要双向检测 (如 MSN) ,可以使用 WaitForMultipleObjects 函数。<br>不论怎么用,一旦程序进入 Wait 状态都会使程序变得没有反应,所以要使用多线程<br>去建立事件和等待事件返回消息。<br>另外,Delphi 自带的 Win32 Help 中对这个函数的声明是错误的,请参考 MSND 的说明。
 
如果不是拔号了?是网卡怎么办?
 
我这里有上述程序的 EXE 档,我是使用 ADSL 的。ADSL 的测试是成功的,其他条件的测<br>试(如:网通或局网共享)我没有条件进行,无忌兄有条件的话,自己可以测试效果。
 
网卡是一开机电脑就上网了,没有很好的办法可以测试,<br>wininet有个函数可以检验是否能上某个站点,我用这个<br>函数可以对付,但是我发现我拔掉网线MSN居然马上就发<br>现了,真是怪事啊,真不知道他的原理是?
 
后退
顶部