我正在使用vb6中的winsock控件来检查Web服务的可用性。 我做了一个post请求,获取响应并解析响应头以检查响应代码。
响应以多个数据包到达。
' this event occurs when data is arriving via winsock
Private Sub wsTCP_DataArrival(ByVal bytesTotal As Long)
Dim strResponse As String
wsTCP.GetData strResponse, vbString, bytesTotal
strResponse = FormatLineEndings(strResponse)
' we append this to the response box becuase data arrives
' in multiple packets
response = response & strResponse
End Sub
我的问题是我需要等到检查响应代码才能继续执行。
有没有办法在不使用计时器的情况下执行此操作?
谢谢, 亚历
毕竟决定使用计时器。
答案 0 :(得分:3)
每次收到数据时,追加到缓冲区然后处理/解析。 它不得不使用阻塞套接字,这意味着你可以在它到达时作出反应。 有关示例,请参阅网络协议上的this article。
答案 1 :(得分:1)
在发送请求时,除了取消按钮或其他内容时,禁用UI中的控件。一旦响应完成,您可以启用UI并在DataArrival中显示结果,否则“继续”。
你真的不想在VB6程序中阻塞套接字,它们会破坏整个Windows编程范例,因为你没有可用的工作线程。即使使用工作线程,您最终也会以相同的方式“暂停”您的UI线程,因此不会有任何损失。
计时器可能是处理请求超时的最简单方法。