【问题标题】:VB6 Application being blocked by firewall after several hours几个小时后,VB6 应用程序被防火墙阻止
【发布时间】:2012-04-27 13:58:44
【问题描述】:

我收到一个客户的报告,说他们遇到了我创建的 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 小时后成为问题?

【问题讨论】:

    标签: http vb6 firewall cisco


    【解决方案1】:

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

    【讨论】:

    • 同意,在 X 时间后尝试断开连接并建立新连接。
    猜你喜欢
    • 2019-04-07
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多