2012-04-27 3 views
0

У меня был отчет от клиента, в котором говорилось, что у них возникла проблема с приложением VB6, которое я создал, и их брандмауэром cisco. Приложение отправляет 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

Это брандмауэр Cisco, поэтому вы, скорее всего, видите xlate-тайм-аут (по умолчанию 3 часа) или проблему с вашими HTTP-запросами, не соответствующими HTTP RFC, и блокируются механизмом проверки HTTP в ASA/PIX , Ваше приложение открывает одно TCP-соединение и использует это же соединение в течение всего 3 часов? Если это самый простой способ, чтобы ваше приложение заново установило TCP-соединение в указанный интервал.

+0

Согласен, попробуйте отключить и установить новое соединение через X минут. – tcarvin

Смежные вопросы