/// <summary>
        /// get all data from discovery packet
        /// </summary>
        /// <param name="discoveryResponse">data from packet</param>
        /// <returns>true if </returns>
        public bool GetDiscoverData(out DiscoveryResponse discoveryResponse)
        {
            if (mPacketType == PacketType.PacketCommand)
            {
                byte[] portData = new byte[2];
                Array.Copy(mData, GetSize() - 2, portData, 0, 2);
                Array.Reverse(portData);
                discoveryResponse.Port = BitConverter.ToInt16(portData, 0);

                byte[] stringData = new byte[GetSize() - 10];
                Array.Copy(mData, 8, stringData, 0, GetSize() - 10);
                string data = System.Text.Encoding.Default.GetString(stringData);
                string[] splittedData = data.Split(',');

                discoveryResponse.HostName = splittedData[0].Trim();
                discoveryResponse.InfoText = splittedData[1].Trim();

                string camcount = splittedData[2].Trim();
                Regex pattern = new Regex("\\d*");
                Match camMatch = pattern.Match(camcount);

                if (camMatch.Success)
                {
                    camcount = camMatch.Groups[0].Value;
                    discoveryResponse.CameraCount = int.Parse(camcount);
                }
                else
                {
                    discoveryResponse.CameraCount = -1;
                }
                try
                {
                    discoveryResponse.IpAddress = "";
                    IPAddress[] adresses = System.Net.Dns.GetHostAddresses(discoveryResponse.HostName);
                    foreach(IPAddress ip in adresses)
                    {
                        if (ip.AddressFamily == AddressFamily.InterNetwork)
                        {
                            discoveryResponse.IpAddress = ip.ToString();
                            break;
                        }
                    }
                }
                catch
                {
                    discoveryResponse.IpAddress = "";

                    return false;
                }
                return true;
            }

            discoveryResponse.CameraCount = -1;
            discoveryResponse.HostName = "";
            discoveryResponse.InfoText = "";
            discoveryResponse.IpAddress = "";
            discoveryResponse.Port = -1;

            return false;
        }
 /// <summary>
 /// Connect the specified pickedServer.
 /// </summary>
 /// <param name="pickedServer">Picked server.</param>
 /// <param name="udpPort">UDP port streaming should occur on.</param>
 /// <param name="stream6d"> if 6DOF data should be streamed.</param>
 /// <param name="stream3d"> if labeled markers should be streamed.</param>
 public bool Connect(DiscoveryResponse discoveryResponse, short udpPort, bool stream6d, bool stream3d)
 {
     if (!mProtocol.Connect(discoveryResponse, udpPort, RTProtocol.Constants.MAJOR_VERSION, RTProtocol.Constants.MINOR_VERSION))
     {
         if (!mProtocol.Connect(discoveryResponse, udpPort, LOWEST_SUPPORTED_UNITY_MAJOR_VERSION, LOWEST_SUPPORTED_UNITY_MINOR_VERSION))
         {
             Debug.Log("Error Creating Connection to server");
             return false;
         }
     }
     return ConnectStream(udpPort, StreamRate.RateAllFrames, stream6d, stream3d);
 }
 /// <summary>
 /// Create connection to server
 ///</summary>
 /// <param name="host">host detected via broadcast discovery</param>
 /// <param name="serverPortUDP">port to use if UDP socket is desired, set to 0 for automatic port selection</param>
 /// <param name="majorVersion">Major protocol version to use, default is latest</param>
 /// <param name="minorVersion">Minor protocol version to use, default is latest</param>
 /// <returns>true if connection was successful, otherwise false</returns>
 public bool Connect(DiscoveryResponse host, short serverPortUDP = -1, int majorVersion = Constants.MAJOR_VERSION, int minorVersion = Constants.MINOR_VERSION)
 {
     return Connect(host.IpAddress, serverPortUDP, majorVersion, minorVersion, host.Port);
 }
 /// <summary>
 /// Connect the specified pickedServer.
 /// </summary>
 /// <param name="pickedServer">Picked server.</param>
 /// <param name="udpPort">UDP port streaming should occur on.</param>
 /// <param name="stream6d"> if 6DOF data should be streamed.</param>
 /// <param name="stream3d"> if labeled markers should be streamed.</param>
 public bool Connect(DiscoveryResponse discoveryResponse, short udpPort, bool stream6d, bool stream3d)
 {
     if (mProtocol.Connect(discoveryResponse, udpPort))
     {
         return ConnectStream(udpPort, StreamRate.RateAllFrames, stream6d, stream3d);
     }
     Debug.Log("Error Creating Connection to server");
     return false;
 }