/// <summary>
        /// Return the main Http development view
        /// </summary>
        /// <returns></returns>
        public ActionResult HttpDevelopment()
        {
            HttpViewModel httpViewModel = new HttpViewModel();

            //set defaults
            httpViewModel.HttpRequestType = HttpRequestType.Get;
            httpViewModel.HttpPortNumber = "50002";
            return View(httpViewModel);
        }
        /// <summary>
        /// Cancel UDP Receive
        /// </summary>
        /// <returns></returns>
        public ActionResult CancelReceiveUDPMessage(HttpViewModel httpViewModel)
        {
            string response = "";

            HTTPManager.CancelUdpBroadcast();

            httpViewModel.HttpResponse = response;

            return PartialView("_HttpResponse", httpViewModel);  //Note This is not used in the view we just need it because ActionResults demand a Return
        }
        /// <summary>
        /// Receive a Udp message
        /// </summary>
        /// <returns></returns>
        public ActionResult ReceiveUDPMessage(HttpViewModel httpViewModel)
        {
            string response = "";

            // response = HTTPManager.ReceiveUdpBroadcast(httpViewModel.HttpPortNumber);

            response = HTTPManager.ReceiveUdpBroadcast("50002");

            httpViewModel.HttpResponse = response;

            return PartialView("_HttpResponse", httpViewModel);
        }
        /// <summary>
        /// Send a tcp message
        /// </summary>
        /// <param name="httpViewModel"></param>
        /// <returns></returns>
        /// <remarks>
        /// Test URLs
        /// http://httpbin.org/robots.txt
        /// http://httpbin.org/get
        /// http://httpbin.org/post
        /// </remarks>
        public ActionResult SendTcpMessage(HttpViewModel httpViewModel)
        {
            if (httpViewModel == null) throw new ArgumentNullException(nameof(HttpViewModel));

            Uri uriResult;
            bool result = Uri.TryCreate(httpViewModel.HttpRequest, UriKind.Absolute, out uriResult)
                && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);

            if(!result)
            {
                httpViewModel.HttpResponse = "Not a valid URL";

                return PartialView("_HttpResponse", httpViewModel);
            }

            string response="";

            if (httpViewModel.HttpRequestType == HttpRequestType.Get)
            {
                response = HTTPManager.SendGetRequest(httpViewModel.HttpRequest);
            }
            if (httpViewModel.HttpRequestType == HttpRequestType.Post)
            {
                response = HTTPManager.SendPostRequest(httpViewModel.HttpRequest);
            }

            httpViewModel.HttpResponse = response;

            return PartialView("_HttpResponse",httpViewModel);
        }
        /// <summary>
        /// Send a Udp message
        /// </summary>
        /// <param name="httpViewModel"></param>
        /// <returns></returns>
        public ActionResult SendUdpBroadcast(HttpViewModel httpViewModel)
        {
            if (httpViewModel == null) throw new ArgumentNullException(nameof(HttpViewModel));

            string response = "";

            response = HTTPManager.SendUdpBroadcast(httpViewModel.HttpRequest, httpViewModel.HttpPortNumber);

            httpViewModel.HttpResponse = response;

            return PartialView("_HttpResponse", httpViewModel);  //Note This is not used in the view we just need it because ActionResults demand a Return
        }