【问题标题】:Custom HTTP server listening in a random IP自定义 HTTP 服务器侦听随机 IP
【发布时间】:2016-12-31 18:48:54
【问题描述】:

我正在为一个只能在 LAN 中使用的应用程序开发一个带有 Boost 的 HTTP 服务器。问题是没有人能够知道带有http服务器的计算机的IP(没有机会做静态的),所以我正在考虑让HTTP服务器监听一个多播地址以便事先知道它.客户端将连接到该多播地址,他们不需要知道服务器 ip。

我的问题:还有其他更优雅的方法吗?

谢谢!

【问题讨论】:

  • 用DNS查找服务器IP怎么样?如果您没有静态 IP,那么您使用的是 DHCP 吗?如果是这样,应该在 DNS 中注册计算机名称。您不必为了在 LAN 上找到具有动态 IP 的服务器而跳过多播循环,人们已经这样做了几十年了。

标签: http boost server multicast


【解决方案1】:

另一种方法是让您的 TCP/HTTP 服务器bind 连接到端口 0,让内核为您分配端口。然后调用getsockname查找分配的端口。

之后,您的服务器开始每隔几秒向预定义的多播地址发送一次 UDP 数据报。每个数据报都包含您的服务器的名称、地址和端口。

客户端加入多播组,接收数据报并发现服务器的名称、地址和端口并连接。


或者,您的服务器可以侦听预定义的多播组,而不是每隔几秒发送一个数据报。客户端向组发送多播数据报以查找服务器所在的位置。服务器用它的名字、地址和端口回复那个数据报。这类似于DNS service discovery with multicast 的工作原理。

【讨论】:

  • 我虽然想到了,但这不是我需要的,因为用户应该能够使用 chrome/mozilla/... 进入网站,所以它对我没有用,因为他们会需要一个额外的应用程序来了解我的 IP,然后使用网络浏览器连接到该地址。我正在寻找的是他们向固定 IP 发送 HTTP 请求,而无论其 IP 是什么,服务器都会获取它。所以我可以很容易地在局域网之间切换。我想要的方式,多播由于各种原因无法工作。
  • 也许可以向多播地址发送 HTTP 请求,然后服务器通过重定向到其 IP 来响应?
  • @deuseux12 HTTP 使用 TCP,但多播适用于无连接协议,例如 IP 和 UDP。
  • 查看 mDNS,它是标准的和多平台的。
猜你喜欢
  • 2014-05-21
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多