我正在为一个仅在 LAN 中使用的应用程序开发一个带有 Boost 的 HTTP 服务器。问题是没有人能够通过 http 服务器知道计算机的 IP(没有机会做静态的),所以我正在考虑让 HTTP 服务器收听多播地址以便事先知道它.客户端将连接到该多播地址,他们不需要知道服务器 ip。
我的问题:有没有其他方法可以更优雅地做到这一点?
谢谢!
最佳答案
另一种方法是让您的 TCP/HTTP 服务器绑定(bind)
到端口 0,让内核为您分配端口。然后调用getsockname
找出分配的端口。
之后,您的服务器开始每隔几秒向预定义的多播地址发送一次 UDP 数据报。每个数据报都包含您的服务器的名称、地址和端口。
客户端加入多播组,接收数据报,发现服务器的名称、地址和端口并连接。
或者,您的服务器可以监听预定义的多播组,而不是每隔几秒发送一次数据报。客户端向组发送多播数据报以查找服务器所在的位置。服务器用其名称、地址和端口回复该数据报。这类似于 DNS service discovery with multicast 的方式。有效。
关于http - 监听随机 IP 的自定义 HTTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39126613/