2012-04-27 9 views
0

私が作成した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時間後に問題が発生するのはなぜですか?

答えて

3

これはシスコのファイアウォールであり、xlateタイムアウト(デフォルトは3時間)またはHTTP要求に問題があり、HTTP RFCに準拠せず、ASA/PIXのHTTP検査エンジンによってブロックされている。アプリケーションが単一のTCP接続を開き、この同じ接続を3時間にわたって使用していますか?その場合は、アプリケーションが指定した間隔でTCP接続を再確立するようにするのが最も簡単な方法です。

+0

Xの時間が経過した後、接続を切断して新しい接続を確立してみてください。 – tcarvin

関連する問題