Zifferblatt mit einer bestimmten Adresse / - interface ? Golang

Habe ich zwei Netzwerk-interfaces auf meinem Rechner ( eth0 und eth1) und ich versuche, die Verbindung mit einem bestimmten (eth1). Angesichts der Aussage, dass die Go ist ein system Sprache bin ich davon ausgegangen, so aber ist es wirklich möglich mit dem aktuellen standard-Bibliothek?

Bisher habe ich, um die Schnittstelle von Namen InterfaceByName (eth1) dann habe ich über die Addrs Methode und extrahiert die erste Adresse [0] das scheint zu sein, die source-Adresse von eth1-Schnittstelle (z.B. xxx.xxx.xxx/24); die andere ist die ipv6-Adresse.

Ich habe eine neue Dialer und setzen Dialer.LocalAddr mit der Adresse extrahiert. Allerdings bekomme ich diesen Fehler mismatched local address type wich, scheint im Zusammenhang mit dialSingle Funktion von dial.gehen

Bearbeiten
Einige code:

package main
import (
        "net"
        "log"
)

func main(){
        ief, err := net.InterfaceByName("eth1")
        if err !=nil{
                log.Fatal(err)
        }
        addrs, err := ief.Addrs()
        if err !=nil{
                log.Fatal(err)
        }
        d := net.Dialer{LocalAddr: addrs[0]}
        _, err = d.Dial("tcp", "google.com:80")
        if err != nil {
                log.Fatal(err)
        }
}

Ausgabe:
2014/12/10 17:11:48 dial tcp 216.58.208.32:80: mismatched local address type ip+net

  • Ich habe Probleme bei der Wiedergabe dieser-können Sie ein Beispiel zeigen, wie Sie die Adresse und Erstellung der dialer?
  • Dank für das schauen hinein. Ich habe einige code. Es scheint, bekomme ich die Fehlermeldung, unabhängig der Adresse/ - interface, das ich verwende, so kann ich nur vermuten-Adresse, die ich in der Dialer.LocalAddr ist nicht von der form erwartet durch Sie kompiliert wird. Ich habe nachgeforscht und es scheint, dass der Standard-Typ zugeordnet von Go hat die gleiche IP-Adresse (die src von der Schnittstelle), aber auch eine port-Nummer. Ich bin mir nicht sicher, warum der port ist erforderlich und wie kann ich mich/ zuweisen.
  • port :0, es ist wohl Teil der Spezifikation, wie manche Protokolle können eine bestimmte Quell-port, so brauchte Sie einige Weg zu lassen, die Sie angeben. :0 die ephemeren "zufällig" (nicht verwendeten) port
  • danke! Noch Addr[golang.org/pkg/net/#Addr] zu sein scheint, eine Schnittstelle. Soll ich rufen Sie die String () - Methode, ersetzen Sie das Subnetz (/24) mit einer port-Nummer und konvertieren/implment es als interface?
  • Hier ist ein Beispiel auf spielen. Es stellt sich heraus, die Sie brauchte *net.IPNet und dann Kerl IP. play.golang.org/p/E3iXXpq0mD (dieser schnappt sich die Adresse von meinem mac wifi-Karte, ändern en0 auf eth1)
  • das Haupt-Problem ist noch nicht behoben, play.golang.org/p/iJTaM-bfdk
  • Ich denke, dass ich wirklich brauchen eine TCPAddr (also die port-Sache) aber ich bin mir nicht sicher, wie ich soll, um das zu bekommen.

Schreibe einen Kommentar