连接到具有未知IP地址的服务器

时间:2017-12-21 09:39:43

标签: electron node-ipc

我有一个电子客户端/服务器应用程序,其中服务器通过LAN与几个客户端进行通信。此通信是通过node-ipc建立的。

问题是,我无法控制LAN DHCP。所以在启动时我不知道服务器IP,更糟糕的是,在服务器启动之前,客户端已经准备就绪。

所以我的服务器脚本是:

const NodeIpc = require('node-ipc');
NodeIpc.config.id = 'world';
NodeIpc.config.retry = 1500;
NodeIpc.config.networkHost = FunctionToReadIP();

NodeIpc.serveNet(
    function () {
      whatever();
    });

在客户端:

const NodeIPC = require('node-ipc');
NodeIPC.config.id = ClientID;
NodeIPC.config.retry= 1500;

NodeIPC.connectToNet(
'world',
function(){
    NodeIPC.of.world.on(
        'connect',
        function(){
            NodeIPC.of.world.emit('Data.fromClient',{data: ClientID});
        }
    );
  });

只要我在一台机器上测试一切,它就能很好用,但我无法连接其他机器。我有任何方式服务器和客户端可以在启动后立即找到对方,而不知道谁拥有哪个IP?

2 个答案:

答案 0 :(得分:0)

我没有使用node-ipc,但我很确定要建立客户端 - 服务器套接字连接,只有客户端需要知道服务器的地址。

这有多种解决方案。你可以......

  • 让用户输入服务器的地址
  • 使用域
  • 确保服务器始终在同一地址下可用
  • 让另一台始终具有相同地址的服务器告诉客户端实际服务器当前正在使用哪个地址
  • 如果服务器位于用户的本地网络内,则扫描网络以查找服务器
  • 如果是小型私有项目,请使用像ngrok这样的服务来“隧道”服务器端口

答案 1 :(得分:0)

我找到了一种通过使用计算机名称(我有权访问)与我的服务器通信的方法。

因此,向我的客户添加NodeIPC.config.networkHost = 'ServerName';就可以了。这样我只需要正确设置我的服务器名称,而不必触摸IP地址。