如何在Node JS中的特定接口上打开套接字?

时间:2017-11-04 11:36:52

标签: node.js sockets raw-sockets

我想知道如何在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"});

这样的东西

1 个答案:

答案 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,可能会多一点,但这很少是一个问题。