2017-11-04 5 views
0

Ich möchte wissen, wie es möglich ist, einfach einen Socket auf einer bestimmten Schnittstelle (eth0, wlan0, ...) in Node JS zu öffnen.Wie öffnet man einen Socket auf einer bestimmten Schnittstelle in Node JS?

Es scheint zu be possible in C und möglich auch mit Ping-Befehl mit ping -I eth0 google.com.

Aber wie geht das mit Node JS? Ich habe nichts in gesehen.

Ich habe some code gefunden, die dynamische Bibliothek umhüllen, aber es sollte einen einfacheren Weg geben, das zu tun. Nein ? So etwas wie socket.connect({host :"google.com", port:80, interface:"eth0"});

Antwort

0

net.Socket.connect(options[, connectListener]) akzeptiert localAddress Parameter, der angibt, welche Adresse der Socket sollte verbinden. Jeder Ihrer physischen Schnittstelle ist genau eine IP-Adresse zugeordnet *. Der richtige Weg wäre also, eine IP-Adresse der Schnittstelle zu ermitteln, die Sie verwenden möchten, und die IP-Adresse unter connect zu verwenden.

socket.connect({ 
    host: "google.com", 
    port: 80, 
    localAddress: somehowGetIPv4AddrOfInterface("eth0"), 
}); 

Das Betriebssystem bestimmt dann die Schnittstelle (in diesem Fall eth0). Ein bisschen umständlich, aber es ist ein übliches Muster, um mit niedrigeren Adressen umzugehen, wenn ein höheres Niveau verfügbar ist.

* - ein bisschen mehr, wenn IPv6 auch konfiguriert ist, aber das ist selten ein Problem.

Verwandte Themen