Go에서 멀티캐스트 UDP 연결을 위한 IP_MULTICAST_LOOP 설정
Windows에서 net.ListenMulticastUDP()를 사용하여 IP_MULTICAST_LOOP 플래그를 설정하는 것은 지원되지 않습니다. 오류 메시지에 언급되어 있습니다. 로컬 시스템에서 멀티캐스트 패킷 전송 및 수신을 활성화하려면 대체 방법이 필요합니다.
golang.org/x/net/ipv4 사용
golang.org/ x/net/ipv4 패키지는 보다 포괄적인 멀티캐스트 지원을 제공합니다. IP_MULTICAST_LOOP 플래그를 직접 조작할 수 있습니다.
MulticastLoopback 플래그
ipv4의 MulticastLoopback 기능은 IP_MULTICAST_LOOP 플래그의 현재 설정을 검색합니다. 루프백을 활성화하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!