Steamp3.Shoutcast.Connect C# (CSharp) Method

Connect() public method

public Connect ( bool async ) : void
async bool
return void
        public void Connect(bool async)
        {
            try
            {
                if (string.IsNullOrEmpty(p_URL)) return;

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(p_URL);
                request.Headers.Clear();
                request.Headers.Add("GET", "/ HTTP/1.0");
                request.Headers.Add("Icy-MetaData", "1");
                request.UserAgent = "WinampMPEG/5.09";
                request.KeepAlive = false;

                if (async)
                {
                    RequestState requestState = new RequestState(request);

                    // Start the asynchronous request.
                    IAsyncResult result = (IAsyncResult)request.BeginGetResponse(new AsyncCallback(ResponseCallback), requestState);

                    // If there is a timeout, the callback fires and the request becomes aborted.
                    System.Threading.ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new System.Threading.WaitOrTimerCallback(TimeoutCallback), request, p_Timeout, true);

                    // The response came in the allowed time.
                    AllDone.WaitOne();

                    //if (requestState.ResponseStream != null) requestState.ResponseStream.Close();
                    if (requestState.Response != null) requestState.Response.Close();
                }
                else
                {
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                    if (response.StatusDescription == "OK" && response.Headers.Count > 0)
                    {
                        int metaInt = Global.StringToInt(response.GetResponseHeader("icy-metaint"));
                        string name = response.GetResponseHeader("icy-name");
                        string genre = response.GetResponseHeader("icy-genre");
                        string url = response.GetResponseHeader("icy-url");

                        OnHeaderReceived(metaInt, name, genre, url);
                    }

                    response.Close();
                }
            }
            catch { }
        }

Usage Example

Example #1
0
        private void p_StreamTimer_Tick(object sender, EventArgs e)
        {
            if (Global.MainWindow.StationList.PlayingItem == null) return;

            p_Shoutcast = new Shoutcast(Global.MainWindow.StationList.PlayingItem.StreamURL, 15000);
            p_Shoutcast.TitleReceived += new Shoutcast.TitleReceivedEventHandler(p_Shoutcast_TitleReceived);
            p_Shoutcast.Connect(true);
        }