首页 文章

没有渲染服务器的C#UDP穿通

提问于
浏览
1

我正在编写一个程序,需要两个客户端(点对点)才能相互连接,而无需使用任何服务器,即使只是在匹配过程中 . 两个客户都已经了解彼此的公共和私人IP . 一个或两个客户端可能在NAT后面 . 我不能依赖IPv6 .

我遇到的问题是一个客户端(让's call them A) must send the packet to the other (B) that punches a hole in A'的NAT通过B已经穿过的B 's NAT which has already been punched. However, this requires that A knows the external port on B'的NAT,因为不能使用B后面的本地端口 . 此外,B无法从后面识别此端口它的NAT .
Visual representation of my problem
有没有办法辨别这个端口,甚至只是让B告诉NAT使用什么端口?

提前致谢 .

附:我使用的是.NET Unity使用的版本,大约2.0 .

P.P.S.如果你有一个适用于TCP的解决方案,我也会接受它!

P.P.P.S.或者几乎除了Http之外的任何协议!

1 回答

  • 1

    您必须拥有一个众所周知的公共服务器才能在两个 endpoints 之间进行协商 .

    这是c#中这个概念的一个很好的实现:https://github.com/7wingfly/P2Pchat

相关问题