2013-11-23 80 views
2

我正在研究做雙向通信應用程序,不一定是點對點。看看使用wcf,我對所有這些內部運作感到好奇。我最擔心的是NAT /防火牆。NAT,wcf,雙工通信...需要一些洞察

我需要有這項工作,而不是在客戶端上進行轉發。我將端口轉發服務器,這很好。但客戶端需要能夠連接到服務器,然後通過這個現在打開的(NAT和防火牆)連接來回通信。

雙工wcf示例我stydying,似乎都使用通知服務器用於回調的客戶端地址。假設這是一個本地局域網地址,那不適用於公共連接。如果其公共地址,端口轉發將需要?

我錯過了什麼嗎?我想建立連接,保持打開狀態,並以雙工方式使用它。因此,一旦客戶端「撥出」,即可通過NAT和防火牆限制。

此外,我不太確定NAT的實施方式。如果我在端口5555上「衝出」一個到wcf服務的連接並收到回覆,那麼從/到該wcf服務地址的端口5555是否停留在NAT表中?如果我要從服務器wcf服務發出更多連接,並且「連接」到客戶端上運行的wcf服務(連接到客戶端公共ip),NAT表將知道它,並將流量轉發到最初打洞的客戶?

我的最終實現是:

遠程客戶端< - 後面端口>服務器前< - >管理應用程序發出命令到它們轉發到遠程客戶端的服務器。

我吠叫錯誤的樹嘗試使用wcf?我剛開始使用raw tcp開發這個工具,但現在再次選擇了這個項目,我想要去wcf路徑來理清我自己的原始tcp通信的所有開銷。

感謝您提供的任何見解。

編輯:[PING-PONG]你好字?

回答

0

With duplex services您可以在服務器和客戶端之間進行獨立通信。

事情要記住約雙工服務:

當一個服務或客戶端關閉其通道的雙工模式不會自動檢測。因此,如果服務意外終止,默認情況下服務將不會被通知,或者如果客戶端意外終止,服務將不會被通知。客戶和服務可以實施他們自己的協議,以便他們如此選擇通知對方。

只要NAT /防火牆設置阻止您的服務工作確實是一個很好的擔憂。但是,您的情況似乎與客戶端和服務器之間的典型雙向通信設置一致。我不會懷疑你通過一些試驗和錯誤來解決問題。

如果我在端口5555上「衝出」一個到wcf服務的連接,並接收到一個回覆​​,那麼端口5555從/到那個wcf服務地址停留在NAT表中?如果我要從服務器wcf服務發出更多連接,並且「連接」到客戶端上運行的wcf服務(連接到客戶端公共ip),NAT表將知道它,並將流量轉發到最初打洞的客戶?

據我所知,這基本上是NAT的工作原理。只要您的服務器的公共IP可通過端口5555訪問入站/出站流量,您應該沒問題。你應該研究或者在Server Fault上提出一個關於這個問題。

我吠叫錯誤的樹嘗試使用wcf?我剛開始使用raw tcp開發這個工具,但現在再次選擇了這個項目,我想要去wcf路徑來理清我自己的原始tcp通信的所有開銷。

我不認爲你在吠叫錯誤的樹。這取決於你想要完成什麼。 WCF將爲您做很多繁重的工作,並讓您專注於應用程序的核心。但是,如果您想要了解更多關於套接字編程的知識,那麼繼續使用自己的網絡API /庫即可。