在Go 中為多播UDP 連線設定IP_MULTICAST_LOOP
在Windows 中,不支援使用net.ListenMulticastUDP() 標誌🎜>在Windows 中,不支援使用net.ListenMulticastUDP() 標記設定因為錯誤訊息中提到。要在本機電腦上啟用組播封包傳送和接收,需要替代方法。
使用 golang.org/x/net/ipv4
golang.org/ x/net/ipv4 軟體包提供了更全面的組播支援。它允許直接操作 IP_MULTICAST_LOOP 標誌:
MulticastLoopback Flag
Mipv4 中的MulticastLback 標誌目前設定。若要啟用環回,請呼叫 SetMulticastLoopback(true)。
範例
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) } }
以上是如何在 Go 中啟用本機上的組播封包發送和接收?的詳細內容。更多資訊請關注PHP中文網其他相關文章!