/// <summary>
        /// Serializes the local listeners that are discoverable
        /// </summary>
        /// <returns></returns>
        private static byte[] SerializeLocalListenerList()
        {
            List<ConnectionListenerBase> allListeners = Connection.AllExistingLocalListeners();
            
            using (MemoryStream ms = new MemoryStream())
            {
                ms.Write(NetworkComms.NetworkIdentifier.Guid.ToByteArray(), 0, 16);

                int discoverableCount = 0;
                ms.Seek(sizeof(int) + 16, SeekOrigin.Begin);

                foreach (ConnectionListenerBase listener in allListeners)
                {
                    if (listener.IsDiscoverable)
                    {
                        PeerListenerEndPoint ep = new PeerListenerEndPoint(listener.ConnectionType, listener.LocalListenEndPoint);
                        byte[] bytes = ep.Serialize();

                        ms.Write(BitConverter.GetBytes(bytes.Length), 0, sizeof(int));
                        ms.Write(bytes, 0, bytes.Length);
                        discoverableCount++;
                    }
                }

                ms.Seek(16, 0);
                ms.Write(BitConverter.GetBytes(discoverableCount), 0, sizeof(int));

                ms.Flush();

                return ms.ToArray();
           }            
        }