我正在为一个只在局域网中使用的应用程序开发一个带有Boost的HTTP服务器。问题是没有人能够通过http服务器知道计算机的IP(没有机会静态),所以我在考虑让HTTP服务器监听多播地址以便事先了解它。客户端将连接到该多播地址,他们不需要知道服务器IP。
我的问题:还有其他更优雅的方法吗?
谢谢!
答案 0 :(得分:1)
另一种方法是让你的TCP / HTTP服务器bind
到端口0并让内核为你分配端口。然后调用getsockname
找出分配的端口。
之后,您的服务器每隔几秒就会开始将UDP数据报发送到预定义的多播地址。每个数据报都包含服务器的名称,地址和端口。
客户端加入组播组,接收数据报并发现服务器的名称,地址和端口并连接。
或者,您的服务器可以监听预定义的多播组,而不是每隔几秒钟发送一次数据报。客户端向组发送多播数据报以查找服务器的位置。服务器使用其名称,地址和端口回复该数据报。这与DNS service discovery with multicast的工作方式类似。