Heim > Backend-Entwicklung > Golang > Wie kann ich das Senden und Empfangen von Multicast-Paketen auf dem lokalen Computer in Go aktivieren?

Wie kann ich das Senden und Empfangen von Multicast-Paketen auf dem lokalen Computer in Go aktivieren?

Patricia Arquette
Freigeben: 2024-11-15 12:05:03
Original
852 Leute haben es durchsucht

How can I enable multicast packet sending and receiving on the local machine in Go?

Einstellen von IP_MULTICAST_LOOP für Multicast-UDP-Verbindungen in Go

Unter Windows wird die Verwendung von net.ListenMulticastUDP() zum Festlegen des IP_MULTICAST_LOOP-Flags nicht unterstützt, da in der Fehlermeldung erwähnt. Um das Senden und Empfangen von Multicast-Paketen auf dem lokalen Computer zu ermöglichen, sind alternative Methoden erforderlich.

Mit golang.org/x/net/ipv4

The golang.org/ Das x/net/ipv4-Paket bietet umfassendere Multicast-Unterstützung. Es ermöglicht die direkte Manipulation des IP_MULTICAST_LOOP-Flags:

  1. Erstellen Sie eine Multicast-UDP-Verbindung mit net.ListenUDP().
  2. Konvertieren Sie die Verbindung in eine ipv4.PacketConn.
  3. Treten Sie mit der gewünschten Multicast-Gruppe bei JoinGroup().

MulticastLoopback-Flag

Die MulticastLoopback-Funktion in ipv4 ruft die aktuelle Einstellung des IP_MULTICAST_LOOP-Flags ab. Um Loopback zu aktivieren, rufen Sie SetMulticastLoopback(true) auf.

Beispiel

package main

import (
    "fmt"
    "net"
    "golang.org/x/net/ipv4"
)

func main() {
    ipv4Addr := &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251), Port: 5352}
    conn, err := net.ListenUDP("udp4", ipv4Addr)
    if err != nil {
        fmt.Printf("ListenUDP error %v\n", err)
        return
    }

    pc := ipv4.NewPacketConn(conn)

    // Assume a network interface named "wlan"
    iface, err := net.InterfaceByName("wlan")
    if err != nil {
        fmt.Printf("Can't find specified interface %v\n", err)
        return
    }
    if err := pc.JoinGroup(iface, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 251)}); err != nil {
        return
    }

    // Enable multicast loopback
    if err := pc.SetMulticastLoopback(true); err != nil {
        fmt.Printf("Error setting multicast loopback: %v\n", err)
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich das Senden und Empfangen von Multicast-Paketen auf dem lokalen Computer in Go aktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage