我们开发了一个客户端应用程序和一个服务器应用程序。客户端使用http协议与服务器通信,并发送一些数据供服务器处理。
我们的结构允许我们将服务器安装在任何地方。我可以在同一个客户端网络上,甚至在云上。
当服务器托管在云上时,向用户询问服务器地址是有意义的(因为如果用户愿意,它可以更改),但当服务器与客户端位于同一网络上时则没有意义。除此之外,我们目前要求用户配置服务器 ip/name 以连接到服务器。
为了避免这种情况(向用户询问地址),我开发了一个基于 UDP 的发现服务。客户端广播一条消息,服务器用它的地址来回答。它在某些情况下确实有效,但当用户有某种防火墙、代理甚至防病毒时,它就不起作用了。
我已经阅读了很多关于发现服务的内容,其中最喜欢的是Bonjour。
所以,问题是:当服务器与客户端位于同一网络上而不会被防火墙、代理等阻止时,发现服务器 IP 的最佳方法是什么?