注册 登录
编程论坛 VFP论坛

关于远程连接,如何减少网络断开后判断的响应时间

fanjinyu9108 发布于 2021-06-05 17:14, 2299 次点击
一个远程连接,假如现在断开网络(拔掉网线),然后执行如下的代码,却发现要等待将近20秒的时间,才出现“远程连接失败!!!”的对话框,请问要如何设置,才能减少等待时间,或者有没有其它更快的判断网络是否通畅的方法。
          #DEFINE CON_STRING "DRIVER=SQL Server;SERVER=10.189.129.7;UID=sa;PWD=wjh6552907;database=tank"
          SQLSETPROP(0,"DispLogin" ,3)   &&不显示任何对话框
           nhandle= SQLSTRINGCONNECT(CON_STRING)
           IF  nhandle<=0    &&连接不成功
                       wait clear
                       MESSAGEBOX("远程连接失败!!!",0,"错误信息")
                       return
           ELSE    &&连接成功
               wait clear  
            
           ENDIF   
           
           RETURN nhandle
        
19 回复
#2
吹水佬2021-06-05 20:30
与 SQLSETPROP 的 ConnectTimeOut 或 QueryTimeOut 有无关系
#3
fanjinyu91082021-06-06 10:35
我设置了,没有用 SQLSETPROP(0,"ConnectTimeOut" ,1)  
                 SQLSETPROP(0,"QueryTimeOut" ,1)   都是在48秒反应,弹出对话框,前面我还说少了
#4
xuminxz2021-06-06 19:38
好像windows ODBC中设定的默认时间是60秒。
#5
radiofan2021-06-07 10:24
我是用完即断,再用再连,就没有网络断掉的问题 ……
#6
fanjinyu91082021-06-07 10:51
即便是用完即断,再用再连,再连的时候还是会遇到断网是的可能啊
#7
吹水佬2021-06-07 15:42
可不可以先用其他方法检测与服务器能否连通,如 ping 方法
#8
radiofan2021-06-07 17:07
以下是引用fanjinyu9108在2021-6-7 10:51:35的发言:

即便是用完即断,再用再连,再连的时候还是会遇到断网是的可能啊


这个要从两个方面去理解:1、如果网络会瞬时断网,且连接一直存在,这样对用户的交互体验会不太舒服。如果即用即连,这种概率会减少。2、如果网络很顺畅,那就不需要考虑这个问题(反正我也没有什么好办法, 现在都是即用即连,除非你的网络挂掉才会有你说的这个情况发生。那如果真的是网络环境不太好,我还是建议你用我说的这个方式 ……
#9
radiofan2021-06-07 17:09
以下是引用吹水佬在2021-6-7 15:42:18的发言:

可不可以先用其他方法检测与服务器能否连通,如 ping 方法


我也一直想找一个在正式连接前测试网络环境的方法,但是一直没有找到 ……
#10
fanjinyu91082021-06-07 20:13
吹水佬师傅,用拼的办法不错,可是在vfp环境中如何实现呢,而且不出现dos的界面,vfp有类似ping 的指令吗

[此贴子已经被作者于2021-6-7 20:15编辑过]

#11
吹水佬2021-06-07 21:37
以下是引用fanjinyu9108在2021-6-7 20:13:52的发言:

吹水佬师傅,用拼的办法不错,可是在vfp环境中如何实现呢,而且不出现dos的界面,vfp有类似ping 的指令吗

试试:
RUN /N7 cmd "/c ping www.baidu.com > c:\temp\kkk.txt"
#12
fanjinyu91082021-06-07 21:49
只有本站会员才能查看附件,请 登录
是这样运行吗?没有任何回应啊
#13
吹水佬2021-06-07 21:57
结果保存在 c:\temp\kkk.txt 文件
c:\temp 文件夹是已经存在的
#14
fanjinyu91082021-06-07 22:01
这个怎么用来判断局域网是通的呢?我们用的是内网,不是外网,关键是要保证服务器的ip地址能拼通

[此贴子已经被作者于2021-6-7 22:03编辑过]

#15
吹水佬2021-06-08 04:59
结果就在输出的文件里,通还是不通结果是不一样的,打开文件就清楚了
#16
fanjinyu91082021-06-08 06:47
只有本站会员才能查看附件,请 登录
吹水佬师傅,结果出来了,您的意思是再从KKK文件里面取数据来判断网络是否通畅吗?有更简洁的判断方法吗?我的想法是每次进行远程操控数据就判断一次。

[此贴子已经被作者于2021-6-8 07:40编辑过]

#17
mywisdom882021-06-08 08:54
内网,也这么慢?正常连接,是多少时间
#18
radiofan2021-06-08 09:38
以下是引用吹水佬在2021-6-7 21:37:41的发言:


试试:
RUN /N7 cmd "/c ping www.baidu.com > c:\temp\kkk.txt"

#19
吹水佬2021-06-08 13:13
以下是引用fanjinyu9108在2021-6-8 06:47:36的发言:

吹水佬师傅,结果出来了,您的意思是再从KKK文件里面取数据来判断网络是否通畅吗?有更简洁的判断方法吗?我的想法是每次进行远程操控数据就判断一次。

是的,可根据KKK文件里面的内容解释各种情况的结果。对于VFP来说,这种方法算是最简洁的了吧。
其实ping功能是用ICMP网络协议来实现,自己也可以用windows API的socket编程来实现。

#20
radiofan2021-06-09 08:54
以下是引用fanjinyu9108在2021-6-5 17:14:47的发言:

一个远程连接,假如现在断开网络(拔掉网线),然后执行如下的代码,却发现要等待将近20秒的时间,才出现“远程连接失败!!!”的对话框,请问要如何设置,才能减少等待时间,或者有没有其它更快的判断网络是否通畅的方法。
          #DEFINE CON_STRING "DRIVER=SQL Server;SERVER=10.189.129.7;UID=sa;PWD=wjh6552907;database=tank"
          SQLSETPROP(0,"DispLogin" ,3)   &&不显示任何对话框
           nhandle= SQLSTRINGCONNECT(CON_STRING)
           IF  nhandle<=0    &&连接不成功
                       wait clear
                       MESSAGEBOX("远程连接失败!!!",0,"错误信息")
                       return
           ELSE    &&连接成功
               wait clear  
            
           ENDIF   
           
           RETURN nhandle
        


你是在初始连接做判断呢?还是在过程中做判断?说说你的思路
1