VB6应用程序在几个小时后被防火墙阻止
问题描述:
我有一个客户的报告说他们遇到了我创建的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小时后成为问题?
答
这是一个思科防火墙,因此您很可能会看到xlate超时(默认为3小时),或者HTTP请求的问题不符合HTTP RFC并被ASA/PIX的http检查引擎阻止。您的应用程序是否打开单个TCP连接,并在整个3小时内使用相同的连接?如果是这样,最简单的方法就是让应用程序在指定的时间间隔内重新建立TCP连接。
同意,尝试断开连接并在X时间后建立新连接。 – tcarvin 2012-04-27 18:43:15