Beispiel #1
0
func sender(p *ipv4.PacketConn, dst net.Addr) {
	ift, err := net.Interfaces()
	if err != nil {
		log.Fatal(err)
	}
	for i := 0; ; i++ {
		avail := net.FlagMulticast | net.FlagUp
		for _, ifi := range ift {
			if ifi.Flags&avail != avail {
				continue
			}
			p.SetMulticastInterface(&ifi)
			b := []byte(fmt.Sprintf("#%v HELLLO-R-U-THERE", i))
			if _, err := p.WriteTo(b, nil, dst); err != nil {
				log.Println(err, "on", ifi)
				continue
			}
			log.Printf("%v bytes sent to %v via %v\n", len(b), dst, ifi)
			time.Sleep(time.Second)
		}
	}
}