我正在爲TCP流尋找可靠的STUN解決方案。我曾嘗試過STUNT(由美國康奈爾大學)和XSTUNT(由臺灣大學)。但他們都顯得老舊無用。用於TCP流的STUN服務器
我想要做的是通過C#在兩個不同網絡中的兩個客戶端之間傳輸文件。請讓我知道如果你有任何的任何解決方案如下:1 和UDP爲基礎的C# 2 - 任何基於TCP的STUN服務器的客戶端/服務器解決方案
我正在爲TCP流尋找可靠的STUN解決方案。我曾嘗試過STUNT(由美國康奈爾大學)和XSTUNT(由臺灣大學)。但他們都顯得老舊無用。用於TCP流的STUN服務器
我想要做的是通過C#在兩個不同網絡中的兩個客戶端之間傳輸文件。請讓我知道如果你有任何的任何解決方案如下:1 和UDP爲基礎的C# 2 - 任何基於TCP的STUN服務器的客戶端/服務器解決方案
Stuntman是支持TCP STUN一個STUN服務器。
www.stunprotocol.org
在該網站上有一些鏈接到一些示例代碼,包括C#實現了客戶端庫。大多數都是針對UDP的,但通過修改一個現有的UDP代碼庫,您可以通過修改一個現有的UDP代碼庫來爲TCP STUN指定自己的C#代碼。
之後,您仍然需要實施信號服務以交換候選地址(直接或通過STUN獲得)並執行您自己的類似於ICE的連接檢查。
對於TCP,簡單的解決方案是使兩個端點使用兩個套接字。一個套接字或監聽,另一個連接 - 但都共享相同的本地端口(ala SO_REUSEADDR套接字選項)。
另一種解決方案是讓每個端點只使用一個套接字。兩個端點都反覆嘗試進行TCP同時連接。如果NAT性能很好,可以建立連接。
NAT穿越,特別是TCP NAT穿越,並不是一門精確的科學。總會有兩個端點不能直接連接的情況,它們必須回退到UDP和/或通過諸如TURN之類的中繼解決方案。
將上述所有信息與去年在基本的P2P/NAT遍歷here上編寫的答案合併。