當我從導向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