2013-10-15 42 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