2012-04-27 65 views
0

我有一個客戶的報告說他們遇到了我創建的VB6應用程序和他們的思科防火牆的問題。應用程序每隔幾秒向我們的服務器發送HTTP POST請求,發送一個小的base64編碼字符串。該應用程序最初工作正常,但大約三個小時後,似乎無法聯繫我們的服務器或互聯網。當應用程序在防火牆之外時,應用程序可以運行愉快。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 2012-04-27 18:43:15

相關問題