Когда я создаю пример Hello World в C++ из Руководства по ZeroMQ здесь: http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-ReceiveКак подавить оповещение безопасности Windows для брандмауэра Windows?
и запустить приложение, я получаю уведомление безопасности Windows, который спрашивает, если я хотел бы, чтобы позволить приложению взаимодействовать на публике или частных сетей.
Это выглядит следующим образом:
Вот где вещи становятся интересными.
Мне нужна только моя программа для прослушивания на порту 5555 для подключения с localhost, и я не хочу . НЕ необходимо разрешить входящие соединения на порту 5555. Это связано с тем, что я хочу общаться только между приложениями на локальном хосте.
Клиент и сервер работают на одном компьютере.
Вот мой текущий процесс. Я запускаю сервер, появляется предупреждение о безопасности Windows, так как я запускаю приложение как учетную запись, отличную от администратора, у меня есть только стандартные разрешения. Затем нажмите «Отмена» в «Оповещение».
При нажатии кнопки «Отмена» при оповещении явное запрещающее правило на всех портах для HelloWorldServer.exe. Это полностью штраф.
Затем я запускаю клиент. Поскольку клиент подключается к локальному хосту. На самом деле мне не нужно отправлять сообщения за пределами локального компьютера, и все его сообщения поступают на сервер просто отлично.
Учитывая явное правило запрета на входящие соединения с HelloWorldServer.exe, сообщения все равно могут поступать от клиента на локальном хосте. Это желаемый результат.
Теперь возникает вопрос, будет ли в любом случае автоматически отвечать на уведомление о безопасности Windows, чтобы нажать «Отменить»? Есть ли способ подавить его от всплытия, поскольку разрешение не нужно?
Запрос нежелателен, поскольку он подразумевает, что приложение должно создавать уязвимость, если это не так.
Предположим, что Named Pipes не являются допустимой альтернативой tcp как средству межпроцессного взаимодействия.
Как вы связали слуховой разъем?Несмотря на то, что вы намерены использовать сокет с локальным хостом, если вы не привязываетесь правильно, он также позволит удалять соединения и запускать брандмауэр. Полезная запись здесь: [понимание INADDR_ANY для программирования сокетов - c] (http://stackoverflow.com/a/16510000/4581301) – user4581301
'socket.bind (" tcp: // *: 5555 "); полный пример находится на http://zguide.zeromq.org/cpp:hwserver – ComradeJoecool
Коэффициенты хороши, что '*' означает разрешить любой адрес, локальный или удаленный. Дайте 'socket.bind (" tcp: // localhost: 5555 ");' или 'socket.bind (" tcp: //127.0.0.1: 5555 ");' попытайтесь связать порт с локальным только трафиком. – user4581301