2013-10-15 74 views
0

我想使用一些全球可用的STUN服務器,以便他們可以告訴我我的NAT映射以便通過UDP遍歷NAT。服務器在這個網頁: http://www.tek-tips.com/faqs.cfm?fid=7542 我測試了他們,他們做ping。問題是構造一個特殊的STUN請求數據包, ,因爲服務器不響應所有傳入數據包。STUN UDP請求數據包問題

STUN協議的數據包結構沒有解釋得太好,我也不想使用任何已經實現它的 庫。是否有Java/C代碼或仔細解釋的數據包結構的例子?我找不到任何有關它的信息。

回答

0

STUN數據包格式在RFC 5389中有詳細的解釋。

如果您想要爲STUN提供體面的Java代碼 - 請參閱JSTUN源代碼。使用他們的庫和/或修改他們的代碼非常簡單。

如果您想使用我的代碼,用C++編寫,您可以仔細閱讀Stuntman的源代碼。有一個解析器類(CStunReader)和一個類來創建STUN消息(CStunWriter)。

+0

儘管我同意RFC 5389詳細描述了STUN,但在我試圖實現標題格式之後,至少從我的結論是,這是我必須處理的最爲複雜的措辭之一。在網絡/非網絡命令中使用二進制/十六進制符號...很難遵循和理解。 – Laazik

+0

@Laazik - RFC經常是這樣的。二進制協議通常很難。在RFC 5389的情況下,它在一些地方懶惰地引用了RFC 3489。但是如果我能弄明白,那麼我認爲任何有足夠耐心和時間的人都可以。 – selbie

+0

我知道,過去15年來,我一直在與ETSI,ITU等標準和協議合作,他們很努力。 儘管如此,「字段必須包含網絡字節順序的值0xXYZ」。 - 這句話有很多含糊之處。 它發現它已經在網絡字節順序的RFC中提出,我最初採取了價值,並改變了排序(根據我的解釋),哪些不起作用。 所以我仍然認爲這是很難解釋這個特定的章節,可以做得更好:)。 – Laazik