Exemple #1
0
        /// <summary>
        /// Creates a venue with IPAddress 234.*.*.* where each * is randomly generated.  Extremely useful
        /// in the case where a venue server is inaccessible.
        /// </summary>
        public Venue CreateRandomMulticastVenue( string name, Image icon )
        {
            IPEndPoint endPoint = null;
            bool trafficInVenue = true;
            while (trafficInVenue)
            {
                #region Randomly choose the Venue's IP address
                Random rnd = new Random();
                int randomaddr = 234;
                randomaddr = randomaddr * 256 + rnd.Next(1, 2^8 - 1);
                randomaddr = randomaddr * 256 + rnd.Next(1, 2^8 - 1);
                randomaddr = randomaddr * 256 + rnd.Next(1, 2^8 - 1);
                endPoint = new IPEndPoint(IPAddress.HostToNetworkOrder(randomaddr), 5004);
                #endregion
                #region Detect whether there is already traffic in the venue, if so change the IP address
                BufferChunk bc = new BufferChunk(MSR.LST.Net.Rtp.Rtp.MAX_PACKET_SIZE);
                UdpListener udpListener = new UdpListener(endPoint, venueInUseTimeout);
                try
                {
                    udpListener.Receive(bc);
                }
                catch (System.Net.Sockets.SocketException e)
                {
                    if (e.ErrorCode == 10060)
                    {
                        trafficInVenue = false;
                    }
                    else
                    {
                        throw;
                    }
                }
                finally
                {
                    udpListener.Dispose();
                }
                #endregion
            }

            VenueData venueData = new VenueData( name, endPoint, 5, VenueType.Custom, icon );

            return AddCustomVenue(venueData);
        }