当我从这里找到的 ZeroMQ 指南中用 C++ 创建 Hello World 示例时:http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive
并运行该应用程序,我收到一个 Windows 安全警报,询问我是否允许该应用程序在公共或专用网络上进行通信。
It looks like this:
这就是事情变得有趣的地方。
我只需要我的程序在端口 5555 上侦听来自本地主机的连接,我确实这样做NOT需要允许端口 5555 上的传入连接。这是因为我只想在本地主机上的应用程序之间进行通信。
客户端和服务器都运行在同一台机器上。
这是我当前的流程。我启动服务器,出现 Windows 安全警报,因为我以非管理员帐户运行该应用程序,所以我只有标准权限。然后我单击警报上的“取消”。
单击警报上的“取消”会在 HelloWorldServer.exe 的所有端口上设置显式拒绝入站规则。这是完全没问题.
然后我启动客户端。由于客户端正在连接到本地主机。我实际上不需要在本地机器之外发送消息,并且所有消息都可以很好地到达服务器。
如果对 HelloWorldServer.exe 的传入连接有明确的拒绝规则,消息仍然可以从本地主机上的客户端到达。这是一个理想的结果。
现在的问题是有没有办法自动响应Windows安全警报点击取消?由于不需要允许,有什么方法可以抑制它弹出吗?
该提示是不受欢迎的,因为它暗示应用程序需要创建漏洞,而实际上并不需要。
请假设命名管道不是 TCP 作为进程间通信方式的有效替代方案。
绑定套接字时,调用者可以指定套接字绑定的 IP 地址。 ZeroMQ提供的编码示例指定
socket.bind ("tcp://*:5555");
where *
似乎指定了所有可能的地址(INADDR_ANY
(BSD 套接字派生的说法)这将触发 Windows 防火墙,因为它允许远程和本地地址。
Calling socket.bind
本地主机地址为 127.0.0.1
socket.bind ("tcp://127.0.0.1:5555");
限制允许连接到本地计算机的套接字,并且应该使大多数 Windows 防火墙配置的防火墙警告静音。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)