2

Это вопрос, связанный с программированием, но он казался более подходящим для SuperUser, чем для StackOverflow.

Я установил McAfee (пробная версия LiveSafe - Internet Security) на моем ПК. Я использую программу Python, которая использует CherryPy для настройки веб-сервера на локальном хосте (127.0.0.1). У меня есть отдельная программа на той же машине, которая отправляет запросы в программу CherryPy.

Эта локальная связь не работает (см. Журнал ниже), когда включен брандмауэр McAfee, и работает, когда он выключен.

Однако, когда я запускаю сервер CherryPy как собственное приложение (например, запускаю его из командной строки cmd), все работает даже при включенном брандмауэре. Но когда я позволяю моей основной программе запускать CherrPy/Python .exe в качестве подпроцесса (именно так обычно работает мое приложение - основное приложение "браузер" запускает приложение CherryPy в качестве подпроцесса), оно не работает.

Итак, подведем итог:

  • Мое приложение должно запускать этот сервер CherryPy как подпроцесс.
  • Когда брандмауэр McAfee активен, он блокирует локальный обмен данными между моим основным приложением и подпроцессом.
  • Но когда я запускаю CherryPy и мое основное приложение как свои собственные приложения верхнего уровня, все работает.
  • Я попытался внести очевидные изменения в панель управления McAfee, чтобы разрешить исключение для имен моих программ (как основного приложения, так и приложения сервера CherryPy) и единственного порта, который они используют для связи (56677), но это не помогло.

Я немного почитал в блогах сообщества McAfee и вижу, что вопрос о блокировке или не блокировании localhost имеет давнюю историю. А потом я также вижу кое-что о "подмене процесса". Поэтому я пытаюсь понять, почему он блокирует подпроцесс, и есть ли способ (а) настроить McAfee, чтобы он не делал этого, оставляя брандмауэр включенным, или (б) запустить мой процесс другим способом, который мешает устранение этого подпроцесса (я использую Win32 API CreateProcess() для его запуска - может быть, ShellExecuteEx() даст другие результаты?).

Ниже приведен журнал CherryPy, показывающий, что он не запускается.

[14/Aug/2015:19:45:39] ENGINE Bus STARTING
[14/Aug/2015:19:45:39] ENGINE Set handler for console events.
[14/Aug/2015:19:45:39] ENGINE Started monitor thread 'Autoreloader'.
[14/Aug/2015:19:45:39] ENGINE Started monitor thread '_TimeoutMonitor'.
[14/Aug/2015:19:47:20] ENGINE Error in 'start' listener <bound method Server.start of <cherrypy._cpserver.Server object at 0x02547250>>
Traceback (most recent call last):
  File "cherrypy\process\wspbus.pyc", line 205, in publish
  File "cherrypy\_cpserver.pyc", line 168, in start
  File "cherrypy\process\servers.pyc", line 177, in start
  File "cherrypy\process\servers.pyc", line 233, in wait
  File "cherrypy\process\servers.pyc", line 459, in wait_for_occupied_port
IOError: Port 56677 not bound on '127.0.0.1'

0