JavaScript net.connect()-显式设置本地端点IP地址

JavaScript net.connect()-显式设置本地端点IP地址,javascript,node.js,sockets,plc,Javascript,Node.js,Sockets,Plc,我找不到在net.connect()函数中设置localendpoint字段的方法。我需要将本地端点显式设置为特定的IP地址 我正在使用节点ads库将节点进程连接到PLC设备 在我的例子中: ads.tcpClient = net.connect( ads.options.port, ads.options.host, function () { ads.connected = true cb.apply(ads.adsClient) }

我找不到在
net.connect()
函数中设置
localendpoint
字段的方法。我需要将
本地端点
显式设置为特定的IP地址

我正在使用
节点ads
库将节点进程连接到PLC设备

在我的例子中:

ads.tcpClient = net.connect(
    ads.options.port,
    ads.options.host,
    function () {
      ads.connected = true
      cb.apply(ads.adsClient)
    }
  )
connect()
函数不为此提供参数。返回的
socket
对象似乎根本没有端点字段。我做错了什么

原因是我正在连接到Beckhoff PLC,如果同一台计算机上已经存在另一个连接,则该连接需要不同的主机IP地址。问题出在最后

我知道,在Beckhoff ADS C#实现中,这是可能的,因为这段代码可以工作:

 var socket = new AmsSocket(targetip, amsport)
 {
     LocalEndPoint = new IPEndPoint(IPAddress.Parse(sourceip), 0)
 };

更新通过执行以下操作解决了问题:

  • 更改您的
    ads.js
    文件以明确设置源IP地址
  • 最好不要在
    node_modules
    中执行此操作,而是将
    ads.js
    文件复制到不会被覆盖的地方
在ads.js
中找到:

var connect = function (cb) {
  var ads = this
  ads.tcpClient = net.connect({
    port: ads.options.port,
    host: ads.options.host,
    localAddress: ads.options.sourceIp,   // the part you have to add
  },
为ADS连接传递
选项中的
源IP

 public options = {
        host: "192.168.100.1",
        amsNetIdTarget: "192.168.100.1.1.1",
        amsNetIdSource: "192.168.100.105.1.1",
        sourceIp: "192.168.100.105",
    };
连接到您的PLC:

const client = ads.connect(this.options, () => {
            console.log("Trying to connect.");
            client.readDeviceInfo((err, result) => {
                if (err) {
                    console.log("Error: " + err);
                }
                console.log("Connection result: " + JSON.stringify(result));
                client.end();
            });
        });
很简单,但不幸的是node-ADS不支持