2012-11-28 4 views
7

In http.request oder net.connect, gibt es eine Option, die ich eine Netzwerkschnittstelle angeben kann, um eine Verbindung zu initiieren?Wie spezifiziert man eine Netzwerkschnittstelle, wenn man Netzanforderungen von Node.js stellt?

BEARBEITEN: AFAIK in OS-Ebene Ich kann Adresslevel oder Load Balancing in Routing-Tabellen angeben. Aber die Art und Weise der Auswahl der Schnittstelle in meiner Software ist mehr als das. Ich möchte wissen, ob ich das in Codes machen kann.

Antwort

3

BEARBEITEN: Wie bereits erwähnt, ist es in der Tat möglich, eine Netzwerkschnittstelle von einem Benutzerprozess anzugeben. Ich stehe korrigiert. Allerdings habe ich noch kein Modul gefunden, das es mit Knoten erlaubt.

Standardmäßig wird die Netzwerkschnittstelle von der OS-Routing-Tabelle bestimmt.

Sie können diese Tabelle mit netstat -r auf Unix-Systemen (einschließlich OSX) auflisten. Öffnen Sie einfach ein Terminal und geben Sie den Befehl ein.

laurent ~ $ netstat -r 
Routing tables 

Internet: 
Destination  Gateway   Flags  Refs  Use Netif Expire 
default   192.168.1.1  UGSc   153  0  en0 
127    localhost   UCS    0  0  lo0 
localhost   localhost   UH    2  42  lo0 
... 

Das Netif Feld gibt Ihnen die Netzwerkschnittstelle für die Route verwendet: Sie erhalten eine Auflistung wie bekommen. Sie können auch die Schnittstelle erhalten verwendet, um einen Hostnamen zu erreichen mit route:

laurent ~ $ route get google.fr 
    route to: par03s02-in-f23.1e100.net 
destination: default 
     mask: default 
    gateway: 192.168.1.1 
    interface: en0 
     flags: <UP,GATEWAY,DONE,STATIC,PRCLONING> 
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount  mtu  expire 
     0   0   0   0   0   0  1500   0 

Dieses mehr eine serverfault Sache ist, aber Sie können mit dem route Befehl Routen ändern. Zum Beispiel dieser Verkehr Weg X.Y.Z. [0-254] zu X.Y.Z.254 auf eth0:

route add -net X.Y.Z.0/24 gw X.Y.Z.254 dev eth0 

Wenn Sie Routen wollen einen Neustart bestehen bleiben, können Sie sie zu /etc/network/interfaces hinzufügen. Wenn Sie das Gleichgewicht zwischen verschiedenen Routen laden möchten, sollten Sie auch MPLS überprüfen.

+0

Danke für die Erklärung, wie Sie die Informationen erhalten. Wie kann ich eine Route angeben? Ich werde meine Frage aktualisieren, um weitere Informationen zu geben. Was ich möchte, ist eine Methode, die mit Code spezifiziert werden kann. Ich verstehe, dass es ein einfaches NEIN sein könnte. : D – Vicary

+0

Es ist tatsächlich möglich, Routen manuell festzulegen. Auf welches Betriebssystem zielen Sie? –

+0

Mein Fall ist CentOS und OSX (Darwin), aber mehr kann kommen, meist unixartig. – Vicary

1

können Sie verwenden node cURL wrapper

curl = require('node-curl') 
curl('www.google.com', { INTERFACE: 'eth1', RAW: 1 }, function(err) { 
    console.info(this); 
}); 
+0

Danke für die Antwort, Curl ist ein guter Anfang. Aber alle meine Codes in Node-Curl zu portieren, sieht nicht nach einer Option aus. Ich möchte wirklich die ursprünglichen net.connect und http.request Sachen behalten. – Vicary