Kann ich mit einer bestimmten Adresse/Schnittstelle in Golang wählen?
Da Go sich als Systemprogrammiersprache herausstellt, fragen Benutzer natürlich nach fortgeschrittenen Programmiersprachen Netzwerkfähigkeiten. Eine solche Abfrage dreht sich um den Aufbau von Verbindungen über bestimmte Netzwerkschnittstellen.
Um dies zu beheben, untersuchen wir das Netzpaket und seine Schnittstellenverarbeitungsfunktionen. Während Go es uns ermöglicht, mit InterfaceByName() eine Schnittstelle nach Namen abzurufen, stellt der anschließende Abruf von IP-Adressen eine leichte Komplikation dar.
Die Addrs()-Methode gibt einen Adressausschnitt zurück, einschließlich IPv4- und IPv6-Adressen. Bei der Auswahl der ersten Adresse wird davon ausgegangen, dass diese der Quelladresse der Schnittstelle entspricht, was möglicherweise nicht immer zutrifft. Darüber hinaus lautet der Typ der abgerufenen Adresse *net.IPnet und kapselt sowohl die IP-Adresse als auch die zugehörige Netzmaske.
Um eine TCP-Verbindung mit einer benutzerdefinierten lokalen Adresse herzustellen, müssen wir ein Netz erstellen. TCPAddr-Objekt. Dieses Objekt erfordert eine bestimmte IP-Adresse, keinen net.IPnet-Typ. Daher müssen wir die IP-Adresse aus dem abgerufenen *net.IPnet-Objekt extrahieren.
Der bereitgestellte Code demonstriert diesen Prozess, indem er eine neue TCPAddr mit der extrahierten IP-Adresse erstellt:
ief, err := net.InterfaceByName("eth1") if err != nil { log.Fatal(err) } addrs, err := ief.Addrs() if err != nil { log.Fatal(err) } tcpAddr := &net.TCPAddr{ IP: addrs[0].(*net.IPNet).IP, }
By Durch die Einhaltung dieser Schritte können Entwickler effektiv Netzwerkverbindungen über bestimmte Adressen und Schnittstellen in Golang herstellen und dabei die Flexibilität nutzen, die mit seiner Fähigkeit zur Systemprogrammierung einhergeht.
Das obige ist der detaillierte Inhalt vonKann ich beim Einwählen in Go eine Netzwerkschnittstelle und -adresse angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!