VB6 winsock等待响应
我正在使用vb6中的winsock控件检查web服务的可用性。 我执行post请求,获取响应并解析响应头以检查响应代码 响应以多个数据包的形式到达VB6 winsock等待响应,vb6,winsock,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 strRespons
' 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
我的问题是,我需要等到检查响应代码后才能继续执行
有没有办法不用定时器就可以做到这一点
谢谢,
亚历克斯
最终决定使用计时器。在发送请求后,禁用用户界面中的控件,但取消按钮或其他控件除外。响应完成后,您可以启用UI并在DataArrival中显示结果,否则“继续” 你真的不想在VB6程序中阻塞套接字,它们会破坏整个Windows编程模式,因为你没有可用的工作线程。即使使用工作线程,您最终也会以相同的方式编写代码来“挂起”UI线程,因此不会有任何损失
计时器可能是处理请求超时的最简单方法。在发送请求时,禁用UI中的控件,但“取消”按钮或其他控件除外。响应完成后,您可以启用UI并在DataArrival中显示结果,否则“继续” 你真的不想在VB6程序中阻塞套接字,它们会破坏整个Windows编程模式,因为你没有可用的工作线程。即使使用工作线程,您最终也会以相同的方式编写代码来“挂起”UI线程,因此不会有任何损失
计时器可能是处理请求超时的最简单方法。每次接收数据时,将其附加到缓冲区,然后对其进行处理/解析。 它绕过了必须使用阻塞套接字的问题,意味着当它到达时,您可以做出反应。
有关示例,请参见网络协议。每次接收数据时,将其附加到缓冲区,然后对其进行处理/解析。 它绕过了必须使用阻塞套接字的问题,意味着当它到达时,您可以做出反应。
有关示例,请参见网络协议。请注意
response=response&strResponse
对性能来说不是很好,因为它疯狂地重新分配字符串。如果预期性能和/或响应较大,则更好的方法是分配一个大缓冲区,该缓冲区不需要在每次数据到达时调整大小,并将数据帧以正确的偏移量插入其中。+1好的建议。。。我使用strResponse是因为我有另一个调用strResponse=FormatLineEndings(strResponse)只是一个注释response=response&strResponse
对性能来说不是很好,因为它疯狂地重新分配字符串。如果预期性能和/或响应较大,则更好的方法是分配一个大缓冲区,该缓冲区不需要在每次数据到达时调整大小,并将数据帧以正确的偏移量插入其中。+1好的建议。。。我使用strResponse是因为我有另一个调用strResponse=FormatLineEndings(strResponse)