Im doing some testing for receiving multicast UDP stream and save it to file using the below functions:
func Record2(udp string, filePath string) {
c1, err := net.ListenPacket("udp4", udp)
if err != nil {
return
}
defer c1.Close()
p1 := ipv4.NewPacketConn(c1)
en0, err := net.InterfaceByName("enp3s0")
addr, _ := net.ResolveUDPAddr("udp4", udp)
if err := p1.JoinGroup(en0, addr); err != nil {
}
Bee.DelFile(filePath)
fo, err := os.Create(filePath)
defer fo.Close()
if err != nil {
panic(err)
}
io.Copy(fo, p1)
}
func Record(udp string, filePath string) {
addr, err := net.ResolveUDPAddr("udp4", udp)
if err != nil {
return
}
Bee.DelFile(filePath)
fo, err := os.Create(filePath)
defer fo.Close()
if err != nil {
panic(err)
}
l, err := net.ListenMulticastUDP("udp4", nil, addr)
defer l.Close()
l.SetReadBuffer(maxDatagramSize)
io.Copy(fo, l)
}
go Record2("224.1.2.2:1234", "file1")
go Record2("224.1.2.1:1234", "file2")
go Record("224.1.2.2:1234", "file3")
Record("224.1.2.1:1234", "file4")
the problem is that udp stream have different content while all files saved got the same content of the first address
this is not occuring when using UDP addresses with different ports
im not sure if this is related to SO_REUSEADDR
how to fix that?