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
Mary-Kate OlsenOriginal
2024-12-07 17:05:14329Durchsuche

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,
    }
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!

Stellungnahme:
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