0

我在 C++ 中构建了一个 websocket(使用 boost::beast)。如果需要,它将使用 JSON 字符串为网站(客户端)提供服务。在设计我的设置时,我犯了一个灾难性的错误:我忘记了客户端 Web 浏览器(运行在与服务器不同的设备上)不会知道服务器的 IP 地址。它将知道服务器正在侦听的端口。

我应该指定:(服务器和客户端)都在本地网络中运行。

所以我有两个笨拙的想法来解决这个问题。我很高兴听到你的意见——我相信会有更优雅的方法来解决我的问题。

  1. 向网络发送某种广播消息“非常特定的字符串”。我的服务器将知道它已被查找,并将以其 IP 响应,以便可以建立连接。 这篇文章似乎表明这种方法是不可能的。

  2. 让用户输入运行服务器的设备的(已知)IP 地址。我真的很想避免这种最后的解决方案。

不幸的是,我无法在托管 websocket 服务器的设备上运行 node.js。

4

2 回答 2

1

我可能没有理解这个问题。为什么你不能知道服务器的IP?是因为它改变了吗?是因为它是您不认识的服务器吗?也许解决方案不是寻找 IP,而是事先知道服务器 IP 地址。

我可以建议您查看这篇文章以找出您本地网络中的 IP 地址。如果您至少知道可能会有所帮助的服务器的服务器名称。

于 2020-03-13T09:27:45.270 回答
0

@E.Soria 谢谢你的回答!我不够精确。

问题是,服务器在将成为我们客户网络一部分的设备上运行。客户将定义设备的 IP 地址,这意味着我需要某种方式来获取服务器的地址。

但我可能已经找到了另一种解决方案(因为您可能已经能够告诉我我对网络非常陌生,所以这可能是错误的):我将在托管服务器并提供数据的同一设备上托管网站。然后我可以像这样通过javascript建立一个websocket连接:let socket = new WebSocket(ws://127.0.0.1:8080);并让网站从服务器读取数据。这似乎很简单,我有点尴尬,我以前没有想到这一点。我只是没有真正理解互联网是如何工作的 :) 只要想要查看该网站的用户知道它的托管位置,他/她就可以连接到该网站并看到我放在那里的任何内容。

我现在的设置

于 2020-03-15T22:18:39.873 回答