如何使用BSD套接字进行UDP NAT穿越

我一直在阅读需要使用外部STUN服务器的NAT穿越。 公共STUN服务器很less,但是我不知道如何使用它们来查找可以被另一个客户端用来启动连接的公共IP。 作为一个noob在这个,我无法find正确的文件,这使用BSDsockets。 如果有人能解释我怎么能find我的公共IP以BSD套接字为基础是好的。 此外,如果你可以提供这个很好的链接,它也wpuld不胜感激。

这是在STUN绑定响应。 STUN规范RFC 5389介绍了第7页上的内容:

STUN服务器将该源传输地址复制到STUN绑定响应中的XOR-MAPPED-ADDRESS属性,并将绑定响应发送回STUN客户端。 当这个数据包通过NAT返回时,NAT将修改IP头中的目标传输地址,但STUN响应主体内的XOR-MAPPED-ADDRESS属性中的传输地址将保持不变。 通过这种方式,客户端可以了解到最外面的NAT相对于STUN服务器分配的自反传输地址。