以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何理解NetworkAddressChanged (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73751) |
-- 作者:happyft -- 发布时间:2015/8/25 21:44:00 -- 如何理解NetworkAddressChanged NetworkAddressChanged和NetworkAvailabilityChangedy这两个事件很难理解 1、人为的将网线拔掉,这种情况哪个事件会执行? 2、本地网络没断,但远程服务器突然连接不上了,哪个事件会执行? 3、网络没断,但人为改变了服务器的IP地址,哪个事件会执行? 因为在这两个事件中用了如下的代码, Dim myConnTest As New ConnTest.ConnNetTest If myConnTest.ConnNetTestByConnStr(Connections("EI").ConnectionString,1000) = False Then Vars("网络状态") = False Else Vars("网络状态") = True End If msgbox(Vars("网络状态")) 当把网络拔掉时,msgbox弹出的对话框显示Vars("网络状态") 为 true(应该是false才对啊) ,此时同样的代码复制到命令窗口执行时,Vars("网络状态")却显示为false. 为什么会这样? 谢谢! |
-- 作者:大红袍 -- 发布时间:2015/8/25 21:56:00 -- 肯定是你封装的方法有问题,在这两个事件,如果你ping网址,是会报错的正确这样写
msgbox(TryConnectHost("www.baidu.com"))
1、NetworkAvailabilityChangedy先执行;
2、不会触发事件;
3、不会触发事件。
|
-- 作者:HappyFt -- 发布时间:2015/8/25 22:03:00 -- 谢谢,用TryConnectHost("网址")与下面的TryConnect数据源链接字符串哪种更快或更稳定? \'返回数据源EI的链接字符串 Dim s As String = Connections("EI").ConnectionString If Connections.TryConnect(s) = False Then MessageBox.Show("数据源无法连通!") Else MessageBox.Show("数据源可以连通!") End If
|
-- 作者:大红袍 -- 发布时间:2015/8/25 22:26:00 -- TryConnectHost 是连接服务器的。
TryConnect 是连接数据库的。
下面这个比TryConnect快一些
try conn.Open |
-- 作者:HappyFt -- 发布时间:2015/8/27 12:06:00 -- 2、本地网络没断,但远程服务器突然连接不上了,哪个事件会执行? 3、网络没断,但人为改变了服务器的IP地址,哪个事件会执行?
NetworkAddressChanged和NetworkAvailabilityChangedy这两个事件在上述两种情况都不触发,那在里面写代码来判断网络是否通就没有意义了,那在上述两种情况下有什么办法快速判断网络已经不通了呢?因为昨天就发现,远程服务器已经关了,客户端都没有任何提示,都卡死在那里了 |
-- 作者:lmk -- 发布时间:2015/8/27 12:24:00 -- 在执行连接远程服务器之前,加入判断远程服务器是否可用的代码,应该可以解决。 |
-- 作者:大红袍 -- 发布时间:2015/8/27 14:34:00 -- 以下是引用HappyFt在2015/8/27 12:06:00的发言:
2、本地网络没断,但远程服务器突然连接不上了,哪个事件会执行? 3、网络没断,但人为改变了服务器的IP地址,哪个事件会执行?
NetworkAddressChanged和NetworkAvailabilityChangedy这两个事件在上述两种情况都不触发,那在里面写代码来判断网络是否通就没有意义了,那在上述两种情况下有什么办法快速判断网络已经不通了呢?因为昨天就发现,远程服务器已经关了,客户端都没有任何提示,都卡死在那里了
NetworkAddressChanged和NetworkAvailabilityChangedy只会检测本计算机的改变。
要不你就用socket通信,当服务器无法访问的时候,自然会抛出错误;
又或者,你用计时器间断的连接服务器,比如执行 select * fr om {表A} where 1=2。如果报错,也是不能连接了。 |
-- 作者:HappyFt -- 发布时间:2015/8/27 17:12:00 -- 大红袍老师,socket通信那个不会啊,原来有听说这次更新要增加socket相关的功能,但愿真的有。 |