Heim >Backend-Entwicklung >Golang >Wie lege ich eine Netzwerkschnittstelle für die Einwahl in Go fest?
Quellschnittstelle beim Wählen mit Go festlegen
In einem Netzwerk mit mehreren Schnittstellen kann es erwünscht sein, eine Verbindung über eine bestimmte anzuwählen . Trotz der Low-Level-Natur von Go unterstützt die Standardbibliothek dies nicht von Natur aus.
Um dies zu versuchen, rufen wir die Zielschnittstelle eth1 mit InterfaceByName ab, extrahieren die erste Adresse mit Addrs und konfigurieren einen Dialer mit Erfasste Adresse als LocalAddr. Es tritt jedoch der Fehler „nicht übereinstimmender lokaler Adresstyp“ auf.
Das Problem entsteht, weil die von der Schnittstelle erhaltene Adresse vom Typ *net.IPnet ist, der sowohl die Adresse als auch die Netzmaske darstellt. Zum Wählen benötigen wir ein *net.TCPAdr, bei dem es sich um eine Adresse und einen Port handelt.
Um das Problem zu lösen, erstellen wir explizit ein *net.TCPAdr, nachdem wir die Schnittstellenadresse als *net.IPnet:
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, }Mit dieser Konfiguration kann der Dialer nun eine Verbindung über die angegebene Schnittstelle aufbauen.
Das obige ist der detaillierte Inhalt vonWie lege ich eine Netzwerkschnittstelle für die Einwahl in Go fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!