当我从导向C语言创建的Hello World示例++上ZeroMQ在这里找到: http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive如何禁止Windows防火墙的Windows安全警报?
并运行应用程序,我得到一个Windows安全警报,询问我是否愿意允许应用程序在公共通信或专用网络。
它看起来像这样:
这里是事情变得有趣。
我只需要我的程序在端口5555侦听来自本地主机的连接,我做不需要允许在端口5555的入站连接。这是因为我只需要在本地主机应用程序之间的通信。
客户端和服务器都在同一台计算机上运行。
这是我目前的过程。我启动服务器,出现Windows安全警报,因为我以非管理员帐户运行应用程序,所以我只拥有标准权限。然后我点击Alert上的取消。
单击取消警报将在HelloWorldServer.exe的所有端口上显式拒绝入站规则。这是完全罚款。
然后我启动客户端。由于客户端连接到本地主机。实际上,我不需要在本地机器之外发送消息,并且它的所有消息都能很好地到达服务器。
给出HelloWorldServer.exe传入连接的显式拒绝规则,消息仍然可以从本地主机上的客户端到达。这是一个理想的结果。
现在问题变成有无自动响应Windows安全警报点击取消?有没有办法阻止它弹出,因为不需要允许?
该提示是不合需要的,因为它暗示应用程序需要创建一个漏洞。
请假定命名管道不是tcp作为进程间通信手段的有效替代方案。
你如何绑定监听套接字?即使你打算只在本地主机上使用套接字,如果你没有正确绑定,它也会允许远程连接,并触发防火墙。这里有用的写法:[理解socket编程的INADDR_ANY - c](http://stackoverflow.com/a/16510000/4581301) – user4581301
'socket.bind(“tcp:// *:5555”);'the完整的例子是在http://zguide.zeromq.org/cpp:hwserver – ComradeJoecool
赔率是好的,'*'意味着允许任何地址,本地或远程。给''socket.bind(“tcp:// localhost:5555”);'或'socket.bind(“tcp://127.0.0.1:5555”);'尝试将端口绑定到本地流量。 – user4581301