0

我收到一个客户的报告,说他们遇到了我创建的 VB6 应用程序和他们的 cisco 防火墙的问题。应用程序HTTP POST每隔几秒向我们的服务器发送请求,发送一个小的 base64 编码字符串。该应用程序最初运行良好,但大约三个小时后,它似乎根本无法联系我们的服务器或互联网。当应用程序在他们的防火墙之外时,应用程序可以愉快地运行。

我没有关于防火墙的更多详细信息,但这里是帖子的 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 小时后成为问题?

4

1 回答 1

3

它是 Cisco 防火墙,因此您很可能会看到 xlate 超时(默认为 3 小时)或您的 HTTP 请求出现问题,不符合 HTTP RFC 并被 ASA/PIX 的 http 检查引擎阻止。您的应用程序是否打开单个 TCP 连接并在整个 3 小时内使用相同的连接?如果是这样,最简单的解决方法是让您的应用程序在指定的时间间隔内重新建立 TCP 连接。

于 2012-04-27T18:32:43.677 回答