예제 #1
0
 public void TestInit()
 {
     if (SoundBoxServer.ActiveServer == null)
     {
         //Use UDP method first (faster)
         List <SoundBoxServer> servers = SoundBoxServer.FindServersUDP();
         if (servers.Count > 0)
         {
             servers[0].APICode         = "12345";
             servers[0].ApiCodeRequired = true;
             SoundBoxServer.SetActiveServer(servers[0]);
         }
         else
         {
             //Fall back on network scan if UDP failed
             servers = SoundBoxServer.FindAllServers();
             if (servers.Count > 0)
             {
                 servers[0].APICode = "12345";
                 SoundBoxServer.SetActiveServer(servers[0]);
             }
             else
             {
                 Assert.Fail("No servers found");
             }
         }
     }
 }
예제 #2
0
        private List <SoundBoxServer> FindAllServersInternal(int timeoutMillisecs)
        {
            var    servers = new List <SoundBoxServer>();
            object locker  = new object();

            CheckConnection();
            string[] classes = m_localIpAddress.Split('.');
            var      subnet  = classes[0] + "." + classes[1] + "." + classes[2] + ".";

            Parallel.For((long)0, 254, (i, loopState) =>
            {
                try
                {
                    var checkIp = subnet + i;
                    Debug.WriteLine("Checking server {0} using {1}ms timeout", checkIp, timeoutMillisecs);
                    var result = CheckForServer(checkIp, timeoutMillisecs);

                    if (result.TimedOut)
                    {
                        loopState.Stop();
                        return;
                    }

                    if (result.Found)
                    {
                        SoundBoxServer server = SoundBoxServer.LoadFromIP(checkIp);
                        if (server != null)
                        {
                            lock (locker)
                            {
                                servers.Add(server);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                    ; // ignore
                }
            });

            return(servers);
        }
예제 #3
0
        public void TestFindAllServersUDP()
        {
            List <SoundBoxServer> servers = SoundBoxServer.FindServersUDP();

            Assert.AreNotEqual(servers.Count, 0);
        }
예제 #4
0
        public void TestFindAllServers()
        {
            List <SoundBoxServer> servers = SoundBoxServer.FindAllServers();

            Assert.AreEqual(servers.Count, 1);
        }