2017-07-27 5 views
-1

Ich habe zwei NICs in meinem Windows-PC, einen für das Internet und den anderen für ausgehende UDP-Streams. Beide NICs haben Gateways und ich optimiere die Metriken so, dass der Internet-gebundene Verkehr an den ersten geht. Ich würde lieber das Gateway auf der zweiten NIC deaktivieren und das Gateway angeben, wenn ich den UDP-Socket erstelle. Ist das möglich? Kann ich die Ziel-MAC-Adresse an einem Socket erzwingen?Force Gateway für IP-Verbindung

+2

Wenn Sie Ihren Socket erstellen und an diesen binden, verwenden Sie nicht INADDR_ANY, verwenden Sie die tatsächliche IP-Adresse, die der NIC zugewiesen ist, die Sie verwenden möchten. –

Antwort

1

Sie müssen bind() den Socket an die lokale IP-Adresse der NIC, die Sie verwenden möchten. Wenn Sie die IP nicht kennen, verwenden Sie GetAdaptersInfo() oder GetAdaptersAddresses(), um die Netzwerkkarten aufzulisten, bis Sie die gewünschte gefunden haben, und dann wissen Sie, an welche IP-Adresse Sie sich binden möchten.

+0

Leider habe ich beim Schreiben der Frage einen Fehler gemacht. Ich möchte nicht nur die NIC angeben, sondern auch das Gateway. –

+0

@BrunoMartinez: So funktionieren Sockets nicht. Sie können kein Gateway angeben, sondern nur die lokale Netzwerkschnittstelle zum Senden und Empfangen. Sie müssen also an die Schnittstelle binden, die mit dem gewünschten Gateway verbunden ist. 'GetAdaptersInfo()' und 'GetAdaptersAddresses()' enthalten beide Gateway-Informationen, so dass Sie danach suchen können. –

+0

Aber zwei NICs, beide mit Gateways, sind ein Schmerz. Sie müssen die Metriken optimieren. Eine spezielle NIC, die wir verwenden (DekTec 2162), erlaubt es, das Gateway pro Verbindung einzustellen. –

Verwandte Themen