58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"net"
|
|
)
|
|
|
|
func (mip *AbstractMulticast) CreateUdpAddr() {
|
|
|
|
// This Will create the local UDP Address
|
|
addr, err := net.ResolveUDPAddr("udp4", mip.MIpAddr+":"+mip.MPort)
|
|
if err != nil {
|
|
log.Fatal(err.Error())
|
|
}
|
|
|
|
mip.MRaddr = addr
|
|
log.Println("Multicast Listen addr created: ", mip.MRaddr.String())
|
|
|
|
// This will create the Writing UDP Addr
|
|
|
|
mip.MWaddr = addr
|
|
log.Println("Multicast Writing addr created: ", mip.MWaddr.String())
|
|
|
|
}
|
|
|
|
func (mip *AbstractMulticast) CreateWritingSocket() {
|
|
|
|
conn, err := net.DialUDP("udp4", nil, mip.MWaddr)
|
|
if err != nil {
|
|
log.Fatal(err.Error())
|
|
}
|
|
|
|
mip.Wconn = conn
|
|
log.Println("Multicast Writing Socket Created: ", mip.Wconn.LocalAddr().String(), "->", mip.Wconn.RemoteAddr().String())
|
|
|
|
}
|
|
func (mip *AbstractMulticast) CreateReadingSocket() {
|
|
|
|
// Open up a connection
|
|
conn, err := net.ListenMulticastUDP("udp", nil, mip.MRaddr)
|
|
if err != nil {
|
|
log.Fatal("UDP " + err.Error())
|
|
}
|
|
|
|
conn.SetReadBuffer(mip.MaxDatagramSize)
|
|
|
|
mip.Rconn = conn
|
|
log.Println("Multicast Reading Socket Created: ", mip.Rconn.LocalAddr().String())
|
|
|
|
}
|
|
|
|
func (mip *AbstractMulticast) GetMulticastReady() {
|
|
|
|
mip.CreateUdpAddr()
|
|
mip.CreateWritingSocket()
|
|
mip.CreateReadingSocket()
|
|
}
|