| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:[求助]判断远程文件是否存在时的问题
只看楼主 加入收藏
cnliang
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-4-1
收藏
 问题点数:0 回复次数:6 
[求助]判断远程文件是否存在时的问题
在判断远程文件是否存在时,如果对方未开机或由于其它原因而不能访问,程序会长时间停滞(虽然判断结束之后会恢复正常),判断的时间约有20秒之久,不知大家有没有好的办法来解决这个问题?尽量缩短这个判断时间


我试了两种方法来处理都有相同问题:
lreZwHnA.rar (7.88 KB) [求助]判断远程文件是否存在时的问题


搜索更多相关主题的帖子: 文件 判断 会长 时间 
2006-01-09 12:09
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
先Ping一下远程主机,如果没有响应就直接说文件不存在,修改后在3-4秒左右可以判断文件是否存在,缺点是:无论存不存在都要花这个时间。

mnSIyeRj.rar (9.31 KB)

[此贴子已经被作者于2006-1-9 13:18:31编辑过]


天津网站建设 http://www./
2006-01-09 12:26
cnliang
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-4-1
收藏
得分:0 
以下是引用griefforyou在2006-1-9 12:26:00的发言:
先Ping一下远程主机,如果没有响应就直接说文件不存在

在VB中怎么用代码实现类似PING的指令?也就是说在VB中怎么在尽量短的时间内判断远程主机是否存在?
曾经用Winsock控件时也遇到过类似的问题,如果客户端连接的是一台存在的远程主机则一切正常,但如果连接的是一台不存在的主机,则程序就只能一直在那尝试连接了,这个等待时间就更长了……

IF winsock1.state=0 then Winsock1.Connect
Do while Winsock1.State<>7 '判断有没有连接上
Doevents
Loop


耐心和持久 胜过 激烈和狂热
2006-01-09 13:17
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 

Winsock连接的时候可以用超时时间来控制。

Option Explicit

Private Sub Command1_Click()
Dim ret As Boolean

With Winsock1

If .State <> 0 Then
.Close
End If
.RemoteHost = "172.16.39.91"
.RemotePort = "80"
.Connect

ret = WaitForConnect(Winsock1, 5) '等待5秒

If ret Then
MsgBox "连接成功¡"
Else
MsgBox "连接超时!"
End If


End With
End Sub

Private Function WaitForConnect(sock As Winsock, Timeout As Integer) As Boolean
Dim StartTime As Date
StartTime = Now

Do While sock.State <> 7 And DateDiff("s", StartTime, Now) < Timeout
DoEvents
Loop

If sock.State = 7 Then
WaitForConnect = True
Else
WaitForConnect = False
End If
End Function

[此贴子已经被作者于2006-1-10 8:52:54编辑过]


天津网站建设 http://www./
2006-01-10 08:52
cnliang
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-4-1
收藏
得分:0 
以下是引用griefforyou在2006-1-9 12:26:00的发言:
修改后在3-4秒左右可以判断文件是否存在,缺点是:无论存不存在都要花这个时间。

感谢griefforyou的帮助!
我用您修改过的那个程序在我机器上测试的结果为:
判断本机大概3~4秒;(cmd下ping 约3~4秒)
判断"ping返回信息中TTL=128的机器"大概3~4秒;(cmd下ping 约3~4秒)
判断"ping返回信息中TTL=64的机器"基本上在33秒以上——时间莫名其妙地长;(cmd下ping 也只需3~4秒)
判断"ping不存在的机器"大概20秒;(cmd下ping 约20秒)

难道是因为我的机器配置太差了,才跑得这么慢?

[此贴子已经被作者于2006-1-10 12:48:12编辑过]


耐心和持久 胜过 激烈和狂热
2006-01-10 10:25
雪龙飘游
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-2-28
收藏
得分:0 
2006-02-28 19:38
shiyide
Rank: 2
等 级:新手上路
威 望:4
帖 子:297
专家分:0
注 册:2006-2-22
收藏
得分:0 
虽然我看不懂·!   但是当我学到这的时候我相信我一定会懂!

学好编程,为中国的软件事业出一份力。
2006-03-01 17:51
快速回复:[求助]判断远程文件是否存在时的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016134 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved