Frage

Ich habe einen Server mit zwei verschiedenen Netzwerkschnittstellen, die jeweils mit einer anderen IP-Adresse. Wie kann ich einen Socket erstellen so dass es dann eine bestimmte IP-Adresse gehen?

Ich würde ein Python-Beispiel bevorzugen, aber die Frage ist sprachunabhängig, so schießen weg.

EDIT: Bitte geben Sie mir nicht „Sie können nicht“ als Antwort. Ich meine, es ist ein Computer. Ich kann ich es tut so etwas wie, zum Beispiel - kann ich programmatisch die eine Schnittstelle deaktivieren Ich will nicht im Fluge. Ich suche nach etwas schöner.

War es hilfreich?

Lösung

Sie können natürlich auch eine Buchse an ein bestimmtes Gerät gebunden werden.

Ich weiß nicht, wie es in Python zu tun, aber die berkeley Buchse api mit (in C) benötigen Sie setsockopt() aufrufen, die Option SO_BINDTODEVICE verwendet wird.

Sie übergeben in einem Interface-Descriptor, die vom Typ struct ifreq ist. Im Idealfall würden Sie den Inhalt des Schnittstellendeskriptor erhalten, indem ioctl() verwenden und SIOCGIFINDEX anfordernden -. Den Namen der Schnittstelle vorbei (. ZB eth0) als Argument


edit: habe gerade eine schnelle Suche und dieser Dokumentation der Socket Methoden gefunden in Python. setsockopt() ist unter ihnen.

Andere Tipps

Nur eine kleine Anmerkung - was ich wirklich brauchen, ist an eine bestimmte IP zu binden, und nur aus Gründen der Vollständigkeit ist die Lösung, um die Buchse nach der Erstellung zu binden. Quelle in Python:

import socket
s = socket.socket()
s.bind(("127.0.0.1", 0))
s.connect(("321.12.131.432", 80))
import socket
s = socket.socket()
s.bind((get_ip_address('eth0'), 0))

von Quoren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top