2011-12-24 16 views
0

私は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-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 

にはどうすればヘッダがContent-Lengthが含まれていない場合には、制御ファイルを受信完了したことを知ることができますか?

Winsock1.state0の場合、接続が閉じていることを意味しますが、時には7のように他の状態にとどまることがあるので、別の解決策が必要です。

答えて

0

あなた自身のHTTPクライアントをロールしたい場合は、推測ではなくHTTP仕様を読むべきです。

HTTP転送はContent-Lengthヘッダーを使用してデータの長さを決定します。ヘッダーがない場合、データの終わりはコネクションクローズによって通知されます。

2

受信したHTTPヘッダーを解析する必要があります。 RFC 2616 Section 4.4では、データの長さやデータの読み込み方法を説明しています。

1

VB6でHTTP要求を行うために使用できるコンポーネントがいくつかあります。 VB6が付属しているものもあれば、Windowsの一部であるものもあります。これらのほとんどは、Winsockコントロールを使用してTCPの上に独自のHTTPをローリングするよりはるかに優れています。ヘッダ処理は、あなたを援助できるものの1つにすぎません。

関連する問題