Vb6 如何知道winsock已完成接收文件?
我正在使用Vb6 如何知道winsock已完成接收文件?,vb6,winsock,Vb6,Winsock,我正在使用Winsock控件: Private Sub Form_Load() Winsock1.Connect "stackoverflow.com", 80 End Sub Private Sub Winsock1_Close() Winsock1.Close End Sub Private Sub Winsock1_Connect() Winsock1.SendData "GET /questions/8624871/vb6-alternative-to-inet-webb
Winsock
控件:
Private Sub Form_Load()
Winsock1.Connect "stackoverflow.com", 80
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
End Sub
Private Sub Winsock1_Connect()
Winsock1.SendData "GET /questions/8624871/vb6-alternative-to-inet-webbrowser-control HTTP/1.1" & vbCrLf & "Host: stackoverflow.com" & vbCrLf & vbCrLf
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s As String
Winsock1.GetData s, vbString
RichTextBox1.Text = RichTextBox1.Text & s
End Sub
当标头不包含内容长度时,如何知道控件已完成接收文件
我听说过一些方法,比如当Winsock1.state
为0
时,这意味着连接已关闭,但有时它仍处于其他状态,如7
,因此我需要另一种解决方案。您需要解析收到的HTTP头。解释它们如何告诉您数据的长度以及需要如何读取数据。您需要解析接收到的HTTP头。解释它们如何告诉您数据的长度以及需要如何读取数据。VB6中有许多组件可用于发出HTTP请求。有些是VB6自带的,有些是Windows的一部分。其中大多数都比使用Winsock控件在TCP之上滚动您自己的HTTP要好得多。标头处理只是它们可以帮助您完成的事情之一。在VB6中,可以使用许多组件来发出HTTP请求。有些是VB6自带的,有些是Windows的一部分。其中大多数都比使用Winsock控件在TCP之上滚动您自己的HTTP要好得多。头处理只是它们可以帮助您的事情之一。如果您仍然想使用自己的HTTP客户端,您应该阅读HTTP规范,而不是猜测
HTTP传输使用内容长度头来确定数据的长度。如果缺少标头,则连接关闭会发出数据结束的信号。如果仍要滚动自己的HTTP客户端,则应阅读HTTP规范,而不是猜测
HTTP传输使用内容长度头来确定数据的长度。如果报头丢失,则连接关闭会发出数据结束的信号