最近遇到一个需求,即公网UDP双向通信的问题。
项目以前有一个小工具,是在局域网上运行的。两台计算机各运行一个程序实例,基于UDP连接,A实例通过向B的IP、端口发消息,B收到后,向A的端口发消息,一切OK。
如果换到公网上,必然会遇到问题。由于很多计算机并不是直接向公网开放所有端口的,特别是在家用路由器后的上网计算机。为了实现UDP通信,地址和端口都是问题。
1、在没有动态域名的情况下,必须增加一种机制,让至少一方知道对方的当前IP;
2、用户需要在路由器界面上设置NAT转发,向公网开放端口。
想讨论一下,有没有改动最少的方法,可以完成这样的UDP双向通信?另外,为了实现UDP双向公网通信,一般是如何设计的?