1

我有一个电子客户端/服务器应用程序,服务器通过 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?

4

2 回答 2

0

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

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

  • 让用户输入服务器的地址
  • 确保服务器在使用域的同一地址下始终可用
  • 让另一台始终具有相同地址的服务器告诉客户端实际服务器当前正在使用哪个地址
  • 如果服务器在用户的本地网络内,则扫描网络以查找服务器
  • 如果是用于小型私人项目,请使用ngrok之类的服务来“隧道”服务器的端口
于 2017-12-21T18:14:54.687 回答
0

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

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

于 2017-12-30T07:47:08.447 回答