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)
};
更新通过执行以下操作解决了问题:
- 更改您的
文件以明确设置源IP地址ads.js
- 最好不要在
中执行此操作,而是将node_modules
文件复制到不会被覆盖的地方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不支持