Heim > Backend-Entwicklung > Golang > Wie lege ich eine Netzwerkschnittstelle für die Einwahl in Go fest?

Wie lege ich eine Netzwerkschnittstelle für die Einwahl in Go fest?

Mary-Kate Olsen
Freigeben: 2024-12-07 17:05:14
Original
332 Leute haben es durchsucht

How to Specify a Network Interface for Dialing in Go?

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,
    }
Nach dem Login kopieren
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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage