INET下载网络进度条的问题

Dgsmile 2007-02-25 06:34:39
我用Inet下载的进度条有时候会停止响应,比如网络断的时候一直显示“请等待..”

我想设定一个超时时间,在一定时间没响应就显示:超时更新失败!

代码如下请高手指点!
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim binBuffer() As Byte
Dim sngProgerssValue As Single
Dim iBlock As Long

On Error Resume Next
iBlock = 0

Select Case State

Case icResponseCompleted
Command2.Enabled = False
'打开文件供写入
Open App.Path & "\" & FileName For Binary Access Write As #1

Do '从缓冲区读取数据
DoEvents

binBuffer = Inet1.GetChunk(512, icByteArray)
'strText = strText & strBuffer
iBlock = iBlock + 1
If m_lngDocSize > 0 Then
'获得进度百分比值
sngProgerssValue = Int((iBlock * 512 / m_lngDocSize) * 100)
'更新进度标签显示内容
lblProgressInfo.Caption = "已下载 " & CStr(iBlock * 512) & " 字节 (" & CStr(sngProgerssValue) & "%)"
'用新值更新进度条控件
ProgressBar1.Value = sngProgerssValue
'写入文件
Put #1, , binBuffer()
End If

Loop Until iBlock * 512 >= m_lngDocSize
'关闭文件
Close #1
'MsgBox "图片更新完成", vbOKOnly Or vbInformation, "在线更新"
lblProgressInfo.Caption = "更新完成!"
re = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "beijin.bmp", 0)
Command2.Enabled = True
' End
Case icResponseReceived

If m_lngDocSize = 0 Then

'读取页面文件大小
If Len(Inet1.GetHeader("Content-Length")) > 0 Then
m_lngDocSize = CLng(Inet1.GetHeader("Content-Length"))
If (m_lngDocSize = 0) Then
' MsgBox "读取远程数据出错", vbOKOnly Or vbExclamation, "在线升级"
lblProgressInfo.Caption = ""
Call start
End If

Else 'NOT LEN(INET1.GETHEADER("CONTENT-LENGTH"))...
'MsgBox "ERROR!", vbOKOnly Or vbExclamation, "在线升级"
lblProgressInfo.Caption = ""
Call start
End If

End If

Case icError
'MsgBox "与主机通信出错", vbOKOnly Or vbExclamation, "在线升级"
lblProgressInfo.Caption = ""
Call start
Case icResolvingHost
lblProgressInfo.Caption = "正在查找主机..."

Case icHostResolved
lblProgressInfo.Caption = "已经找到主机"

Case icConnecting
lblProgressInfo.Caption = "正在联系主机"

Case icConnected
lblProgressInfo.Caption = "已经连接到主机"

Case icRequesting
lblProgressInfo.Caption = "正在发送请求..."

Case icRequestSent
lblProgressInfo.Caption = "成功发送请求"

Case icReceivingResponse
lblProgressInfo.Caption = "正在接收回应..."

Case icDisconnecting
lblProgressInfo.Caption = "正在断开连接..."

Case icDisconnected
lblProgressInfo.Caption = "已经断开连接"

End Select
' End
End Sub
Sub start()
'文件大小值复位

m_lngDocSize = 0

'复位进度条控件
ProgressBar1.Value = 0.001

'显示进度的标签内容设为空
lblProgressInfo.Caption = ""

'定义ITC控件使用的协议为HTTP协议
Inet1.Protocol = icHTTP

'调用Execute方法向Web服务器发送HTTP请求
Inet1.Execute Trim$(strURL), "GET"
lblProgressInfo.Caption = "请等待..."
're = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "E:\serverpic\beijin.bmp", 0)
End Sub
...全文
343 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧