Maison >développement back-end >Golang >Comment définir IP_MULTICAST_LOOP sur les connexions UDP multicast dans Golang ?
Activation de IP_MULTICAST_LOOP sur les connexions UDP multicast à Golang
Pour activer IP_MULTICAST_LOOP sur les connexions UDP multicast, la fonction net.ListenMulticastUDP est disponible, mais son limites include :
Solution utilisant golang.org/x/ net/ipv4
Pour une plus grande flexibilité, pensez à utiliser golang.org/x/net/ipv4 :
Exemple de code :
package main import ( "fmt" "net" "golang.org/x/net/ipv4" ) func main() { // IPv4 address for multicast ipv4Addr := &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251), Port: 5352} // Dial a UDP connection conn, err := net.ListenUDP("udp4", ipv4Addr) if err != nil { fmt.Printf("Error dialing: %v\n", err) return } // Create a packet connection from the UDP connection pc := ipv4.NewPacketConn(conn) // Assume an interface named "wlan" iface, err := net.InterfaceByName("wlan") if err != nil { fmt.Printf("Could not find interface %v\n", err) return } // Join the multicast group on the specified interface if err = pc.JoinGroup(iface, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251)}); err != nil { fmt.Printf("Failed to join multicast group: %v\n", err) return } // Get and set multicast loopback status loop, err := pc.MulticastLoopback() if err != nil { fmt.Printf("Failed to get multicast loopback status: %v\n", err) } fmt.Printf("Multicast loopback status: %v\n", loop) if !loop { if err = pc.SetMulticastLoopback(true); err != nil { fmt.Printf("Could not set multicast loopback: %v\n", err) return } } // Send a message on the multicast address if _, err = conn.WriteTo([]byte("hello"), ipv4Addr); err != nil { fmt.Printf("Error sending multicast message: %v\n", err) } // Reading multicast messages buf := make([]byte, 1024) for { n, addr, err := conn.ReadFrom(buf) if err != nil { fmt.Printf("Error in multicast message reception: %v\n", err) } fmt.Printf("Message received: %s from %v\n", buf[:n], addr) } }
En suivant ces étapes, vous pouvez définir efficacement IP_MULTICAST_LOOP et envoyer/recevoir des paquets de multidiffusion sur votre machine locale.
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!