VB6 winsock等待响应

时间:2011-09-15 11:54:41

标签: vb6 winsock

我正在使用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

我的问题是我需要等到检查响应代码才能继续执行。

有没有办法在不使用计时器的情况下执行此操作?

谢谢, 亚历

毕竟

决定使用计时器。

2 个答案:

答案 0 :(得分:3)

每次收到数据时,追加到缓冲区然后处理/解析。 它不得不使用阻塞套接字,这意味着你可以在它到达时作出反应。 有关示例,请参阅网络协议上的this article

答案 1 :(得分:1)

在发送请求时,除了取消按钮或其他内容时,禁用UI中的控件。一旦响应完成,您可以启用UI并在DataArrival中显示结果,否则“继续”。

你真的不想在VB6程序中阻塞套接字,它们会破坏整个Windows编程范例,因为你没有可用的工作线程。即使使用工作线程,您最终也会以相同的方式“暂停”您的UI线程,因此不会有任何损失。

计时器可能是处理请求超时的最简单方法。