私が作成したVB6アプリケーションとそのシスコのファイアウォールで問題が発生しているというクライアントからの報告がありました。アプリケーションは、数秒ごとに小さなbase64エンコード文字列を送信して、HTTP POST
リクエストをGoogleサーバーに送信します。このアプリケーションは最初はうまくいきましたが、約3時間後に私たちのサーバーやインターネットに接続できないようです。アプリケーションがファイアウォールの外にある場合、アプリケーションは楽しく実行できます。VB6アプリケーションが数時間後にファイアウォールでブロックされる
私は、ファイアウォールについての詳細を持っていないが、ここでのポストのためのVB6のコードは、(Winsock1のは、Winsockコントロールである)である:
strHttp = "POST" & URL & " HTTP/1.1" & vbCrLf
strHttp = strHttp & "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" & vbCrLf
strHttp = strHttp & "X-Method: Submit" & vbCrLf
strHttp = strHttp & "Content-Length: " & lngBodyLength & vbCrLf
strHttp = strHttp & "Accept: text/html" & vbCrLf
strHttp = strHttp & "User-Agent: MyApplication (www.ourwebsite.com)" & vbCrLf
strHttp = strHttp & "Host: " & HOST & vbCrLf
strHttp = strHttp & vbCrLf & strBody
mainForm.Winsock1.Protocol = sckTCPProtocol
mainForm.Winsock1.RemoteHost = IP_ADDRESS
mainForm.Winsock1.RemotePort = 80
blnConnectionError = False
mainForm.Winsock1.Connect
While Not blnConnected And Not blnConnectionError
DoEvents
Wend
mainForm.Timer_Http_Timeout.Enabled = True
mainForm.Winsock1.SendData strHttp
問題が発生した後にアプリケーションが再起動される場合は、それは約3時間の別の期間にうまくいくでしょう。私はこれを解決するためにおそらくコード内で何かできると思います。
ファイアウォールを気にする上記のコードについて何かありますか?
3時間後に問題が発生するのはなぜですか?
Xの時間が経過した後、接続を切断して新しい接続を確立してみてください。 – tcarvin