/* Methods */
/// <summary>
/// UDP multicast provider constructor
/// </summary>
/// <param name="lcm">LCM object</param>
/// <param name="up">URL parser object</param>
public UDPMulticastProvider(LCM lcm, URLParser up)
{
this.lcm = lcm;
string[] addrport = up.Get("network", DEFAULT_NETWORK).Split(':');
inetAddr = Dns.GetHostAddresses(addrport[0])[0];
inetPort = Int32.Parse(addrport[1]);
inetEP = new IPEndPoint(inetAddr, inetPort);
Debug.Log(inetEP);
sock = new UdpClient();
sock.MulticastLoopback = true;
sock.ExclusiveAddressUse = false;
sock.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
sock.Client.Bind(new IPEndPoint(IPAddress.Any, inetPort));
int ttl = up.Get("ttl", DEFAULT_TTL);
if (ttl == 0)
{
Console.Error.WriteLine("LCM: TTL set to zero, traffic will not leave localhost.");
}
else if (ttl > 1)
{
Console.Error.WriteLine("LCM: TTL set to > 1... That's almost never correct!");
}
else
{
Console.Error.WriteLine("LCM: TTL set to 1.");
}
sock.Ttl = (short)ttl;
sock.JoinMulticastGroup(inetAddr);
}