Maison >développement back-end >Golang >Comment spécifier une interface réseau pour la numérotation en Go ?

Comment spécifier une interface réseau pour la numérotation en Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 17:05:14329parcourir

How to Specify a Network Interface for Dialing in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn