Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text;
- using System.IO;
- using System.Net;
- using System.Net.Sockets;
- using System.Collections.Generic;
- namespace rodeo
- {
- class MainClass
- {
- public static void Main(string[] args)
- {
- new MainClass().rin(args);
- }
- public void rin(string[] args)
- {
- int metaint = 32768;
- Console.Error.WriteLine("...");
- TcpClient tc = new TcpClient();
- tc.Connect("stream.r-a-d.io", 1130);
- //tc.Connect("195.5.121.132", 80);
- Console.Error.WriteLine("Connected");
- Stream s = tc.GetStream();
- StreamWriter sw = new StreamWriter(s);
- sw.Write("GET /main.mp3 HTTP/1.0\r\n");
- sw.Write("Icy-MetaData:1\r\n\r\n");
- sw.Flush();
- while (true)
- {
- StringBuilder sb = new StringBuilder();
- while (true)
- {
- char c = (char)s.ReadByte();
- if (c == '\r') continue;
- if (c == '\n') break;
- sb.Append(c);
- }
- string rsp = sb.ToString();
- if (rsp.Length < 2)
- {
- break;
- }
- Console.Error.WriteLine(rsp);
- if (rsp.StartsWith("icy-metaint:"))
- {
- int ofs = "icy-metaint:".Length;
- metaint = Convert.ToInt32(rsp.Substring(ofs));
- }
- }
- byte[] txtbuf = new byte[16*0xFF];
- byte[] mp3buf = new byte[metaint];
- Stream stdout = Console.OpenStandardOutput(metaint);
- while (true)
- {
- int i, j = 0;
- while (true)
- {
- i = s.Read(mp3buf, j, mp3buf.Length - j);
- if (i <= 0)
- {
- Console.Error.WriteLine("ASSERT: i > 0");
- return;
- }
- j += i;
- if (j > metaint)
- {
- Console.Error.WriteLine("ASSERT: j < metaint");
- return;
- }
- if (j >= metaint)
- {
- break;
- }
- }
- stdout.Write(mp3buf, 0, metaint);
- stdout.Flush();
- int txtlen = s.ReadByte() * 16;
- i = s.Read(txtbuf, 0, txtlen);
- if (i != txtlen)
- {
- Console.Error.WriteLine("ASSERT: i == txtlen");
- return;
- }
- Console.Error.Write(System.Text.Encoding.UTF8.GetString(txtbuf, 0, i));
- }
- //Console.WriteLine("Disconnected!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement