2014-09-24 57 views
0

我使用基於ZeroMq和NetMQ(在這兩個項目同樣的問題)ZeroMQ/NetMQ - 是否有可能定義一個「客戶」

我有應用程序運行防火牆後面的通信的源端口,

位於服務器端的易上定義開入站流量的端口,

但是在客戶端看來,我能夠只指定目標(又名服務器)地址和端口。

是否可以定義哪個端口將用於客戶端應用程序的出站流量。

例如(在NetMQ)

 using (NetMQContext ctx = NetMQContext.Create()) 
     { 
     using (NetMQSocket snapshot = ctx.CreateSocket(ZmqSocketType.Dealer)) 
     { 
      // connect to remote address, no place to specify outbound port 
      snapshot.Connect("192.168.1.10:5555"); 
     } 
     } 

在我們有一個服務器和

服務器機器A(192.168.1.10)上運行的客戶端一個簡單的通訊方案 - 並偵聽端口5555

客戶端機器B(192.168.1.9)上運行 - 並且正在發起到服務器的通信(A)如果我們看一下對T通信信息

他的客戶,我們會看到系統分配 端口XXXXX(例如51234)及部分出站到192.168.1.10:5555

在大多數情況下,XXXXX端口是由系統(自由港)分配,然而, 極端情況下,XXXXX端口需要是特定的端口(由於極端的安全環境)

+1

??同一端口5555用於從客戶端到服務器的經銷商套接字通信。如果這不是答案,則需要改進問題。 – 2014-09-24 12:11:49

+0

你能解釋你遇到的問題嗎?爲了詳細說明@JohnJefferies所說的話,把你的服務器看作一個房間,將你的客戶看作是一個相鄰的房間,並且你說「很容易告訴人們進入服務器房間來進門,但是當我離開客戶房間,我該如何選擇通過哪個門?「這是兩面牆上的同一扇門。 – Jason 2014-09-24 19:03:03

+0

我增加了一些解釋,希望能夠解決這個問題 – 2014-09-24 19:47:12

回答

1

當您在更新中聲明時,源端口通常由系統分配。我確實在這個問題上找到了一些ZMQ特定的通信:

In this link有一些關於如何在ZMQ協議中指定源IP和源端口的討論 - 這裏討論的人是維護ZMQ的核心開發團隊(特別是,Pieter Hintjens「創立了」ZMQ「),所以你可以從中看出它在一年前還沒有實施。

Further, here you can see it was eventually implemented今年4月......只要您有最新版本的ZMQ,並且您的綁定沒有任何阻礙此功能的特性,您應該能夠遵循這些準則。

特別是,它看起來像下面的內容:

snapshot.Connect("192.168.1.9:51234;192.168.1.10:5555"); 

同樣,這可能會或可能不會被你的結合而改變。

+0

謝謝。我看到了討論,甚至找到了補丁,但無法使其工作,必須使用舊版本。謝謝 – 2014-09-25 08:39:07

0

這在NetMQ中不受支持,如果您希望您可以嘗試從zeromq移植此功能,它不應該很複雜,我可以幫助您。

+0

可悲的是我只能接受一個答案。但是我問了兩個系統,所以你對NetMQ的答案是正確的。所涉及的項目改變了防火牆政策以支持正常使用情況,因此目前問題似乎已經解決。我會在幾分鐘的時間內收到您的報價。 – 2014-09-25 08:35:49

相關問題