Maison >développement back-end >Golang >Comment spécifier une interface réseau pour la numérotation en Go ?
Définition de l'interface source dans la numérotation avec Go
Dans un réseau avec plusieurs interfaces, il peut être souhaité d'établir une connexion en utilisant une interface spécifique . Malgré la nature de bas niveau de Go, la bibliothèque standard ne prend pas automatiquement en charge cela.
Pour tenter cela, nous récupérons l'interface cible, eth1, à l'aide de InterfaceByName, extrayons la première adresse à l'aide d'Addrs et configurons un numéroteur avec le adresse acquise en tant que LocalAddr. Cependant, nous rencontrons une erreur « type d'adresse locale incompatible ».
Le problème survient car l'adresse obtenue à partir de l'interface est de type *net.IPnet, qui représente à la fois l'adresse et le masque de réseau. Pour composer, nous avons besoin d'un *net.TCPAdr, qui est une adresse et un port.
Pour résoudre le problème, nous créons un *net.TCPAdr explicitement après avoir affirmé l'adresse de l'interface en tant que *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, }
Avec cette configuration, le Dialer peut désormais établir une connexion en utilisant l'interface spécifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!