我想知道如何在Node JS中的特定接口(eth0,wlan0,...)上打开一个套接字。
be possible in C似乎也可以使用ping -I eth0 google.com
的ping命令。
但是如何用Node JS做到这一点? 我在net.Socket documentation中没有看到任何内容。
我发现some code包装了动态库,但应该有一种更简单的方法。不是吗?
像socket.connect({host :"google.com", port:80, interface:"eth0"});
答案 0 :(得分:0)
net.Socket.connect(options[, connectListener])
接受localAddress
参数,该参数指定套接字应连接的地址。每个物理接口都只有一个IP地址*。因此,正确的方法是确定您要使用的接口的IP地址,并在connect
调用中使用IP。
socket.connect({
host: "google.com",
port: 80,
localAddress: somehowGetIPv4AddrOfInterface("eth0"),
});
OS将确定接口(在这种情况下为eth0)。有点麻烦,但是当更高级别可用时,这是避免处理较低级别地址的常用模式。
* - 如果还配置了IPv6,可能会多一点,但这很少是一个问题。