Advertisement
mkv

icy

mkv
Aug 7th, 2012
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.04 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. using System.IO;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.Collections.Generic;
  7.  
  8. namespace rodeo
  9. {
  10.     class MainClass
  11.     {
  12.         public static void Main(string[] args)
  13.         {
  14.             new MainClass().rin(args);
  15.         }
  16.         public void rin(string[] args)
  17.         {
  18.             int metaint = 32768;
  19.             Console.Error.WriteLine("...");
  20.             TcpClient tc = new TcpClient();
  21.             tc.Connect("stream.r-a-d.io", 1130);
  22.             //tc.Connect("195.5.121.132", 80);
  23.             Console.Error.WriteLine("Connected");
  24.             Stream s = tc.GetStream();
  25.             StreamWriter sw = new StreamWriter(s);
  26.             sw.Write("GET /main.mp3 HTTP/1.0\r\n");
  27.             sw.Write("Icy-MetaData:1\r\n\r\n");
  28.             sw.Flush();
  29.             while (true)
  30.             {
  31.                 StringBuilder sb = new StringBuilder();
  32.                 while (true)
  33.                 {
  34.                     char c = (char)s.ReadByte();
  35.                     if (c == '\r') continue;
  36.                     if (c == '\n') break;
  37.                     sb.Append(c);
  38.                 }
  39.                 string rsp = sb.ToString();
  40.                 if (rsp.Length < 2)
  41.                 {
  42.                     break;
  43.                 }
  44.                 Console.Error.WriteLine(rsp);
  45.                 if (rsp.StartsWith("icy-metaint:"))
  46.                 {
  47.                     int ofs = "icy-metaint:".Length;
  48.                     metaint = Convert.ToInt32(rsp.Substring(ofs));
  49.                 }
  50.             }
  51.             byte[] txtbuf = new byte[16*0xFF];
  52.             byte[] mp3buf = new byte[metaint];
  53.             Stream stdout = Console.OpenStandardOutput(metaint);
  54.             while (true)
  55.             {
  56.                 int i, j = 0;
  57.                 while (true)
  58.                 {
  59.                     i = s.Read(mp3buf, j, mp3buf.Length - j);
  60.                     if (i <= 0)
  61.                     {
  62.                         Console.Error.WriteLine("ASSERT: i > 0");
  63.                         return;
  64.                     }
  65.                     j += i;
  66.                     if (j > metaint)
  67.                     {
  68.                         Console.Error.WriteLine("ASSERT: j < metaint");
  69.                         return;
  70.                     }
  71.                     if (j >= metaint)
  72.                     {
  73.                         break;
  74.                     }
  75.                 }
  76.                 stdout.Write(mp3buf, 0, metaint);
  77.                 stdout.Flush();
  78.                 int txtlen = s.ReadByte() * 16;
  79.                 i = s.Read(txtbuf, 0, txtlen);
  80.                 if (i != txtlen)
  81.                 {
  82.                     Console.Error.WriteLine("ASSERT: i == txtlen");
  83.                     return;
  84.                 }
  85.                 Console.Error.Write(System.Text.Encoding.UTF8.GetString(txtbuf, 0, i));
  86.             }
  87.             //Console.WriteLine("Disconnected!");
  88.         }
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement