• 締切済み

WinsockでwebにPOSTした後の処理について

Winsockコントロールを使って掲示板などにPOSTでデータを送信する際、ヘッダー部分で Content-Length: ~~~ も送信してるのですが、 Content-Length:の値分のDATA?を送らないとサーバー側がずっと待機する状態になると思うのですが、 これはWinsockのCloseメソッドを使えばサーバーの待機状態が解除されますか? また、SendDataの途中でプログラムを終了する場合もCloseメソッドでいきなり閉じても大丈夫でしょうか? 自分が書いた該当部分のソースは下記の通りです。 Dim strHead As String 'ヘッダー Dim strData As String 'データ 'いろいろな処理  strHead=strHead & vbCrLf & "Content-Length: " & LenB(StrConv(strData, vbFromUnicode)) & vbCrLf & vbCrLf  'strHeadとstrDataにはきちんとデータが入ってる  Winsock1.SendData strHead & strData End Sub そして Winsock1_DataArrivalプロシージャーに Dim strBuf As String  Winsock1.GetData strBuf  If Instr(1,strBuf,"</HTML)") > 0 Then   Sleep 1000:DoEvents   Winsock1.Close  End If Form_QueryUnloadプロシージャーに  Sleep 1000:DoEvents  Winsock1.Close End Sub

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

> これはWinsockのCloseメソッドを使えばサーバーの待機状態が解除されますか? 一応大丈夫(サーバ側の実装による)だが、お行儀が良いとは言えないだろうな。 > また、SendDataの途中でプログラムを終了する場合もCloseメソッドでいきなり閉じても大丈夫でしょうか? 一応大丈夫(サーバ側の実装による)だが、これまたお行儀が良いとは言えないだろうな。 蛇足だが、HTTPを使う場合、WinSockの変わりにWinInetを使うとこのあたりの制御は一切気に掛けなくてよくなる。

yu_mitsui
質問者

補足

一応大丈夫みたいですが、やはりいきなりCloseするのは一般的な方法では無いみたいですね。 普通はどのように処理をするのか教えてくださると助かります。 WinInetに関しては調べてみることにします。