| |

VB.NET - FortgeschritteneRe: mp3-Radio-Stream hören aber wie? Teil 2 | |  | Autor: burny | Datum: 13.05.07 14:58 |
| ------------------------------------------------Anfang Teil 2-----------------------------------------
Public Sub PushDataOnBuffer(ByRef bytes() As Byte, Optional ByVal _
startindex As Integer = 0, Optional ByVal length As Integer = 0)
b.Push(bytes, startindex, length)
End Sub
Public Sub ClearBuffer()
b.Flush()
End Sub
Public Sub ReceiveDataThread()
Dim data As String
Dim bytes() As Byte = Array.CreateInstance(GetType(Byte), 0)
Dim response As String = ""
Dim lastreceive As Date
data = Nothing
client.ReceiveBufferSize = 1024
' Get a stream object for reading and writing
Dim stream As NetworkStream = client.GetStream()
Dim i As Integer = 1
' Loop to receive all the data sent by the client.
While (client.Connected)
Array.Resize(Of Byte)(bytes, client.Available)
If client.Connected Then
Try
i = stream.Read(bytes, 0, client.Available)
Catch ex As Exception
client.Close()
WriteToDebug("Streamen an einen Client abgebrochen: ", _
enDebugLevel.dlNote, ex, False)
Exit Sub
End Try
End If
data = System.Text.Encoding.ASCII.GetString(bytes)
' Process the data sent by the client.
Data = Data.ToLower()
If data <> "" Then
lastreceive = Date.Now
If data.Substring(0, 4) = "get " Then
If data.Substring(4).Contains("/listen.mp3") Then
st.Start()
End If
End If
End If
If Date.Now.Subtract(lastreceive).Seconds > 3 Then Exit While
DelayThread(50)
End While
End Sub
Public Sub StreamingThread()
'Alle wieviel ms wird ein Datenpaket gesendet?
Const PACKET_DELAY As Single = 200
'Qualität des Streams: Bitrate / 8 * 1024
Const QUALITY As Integer = 128 / 8 * 1024
'Resultierende Paketgröße
Const PACKET_SIZE As Integer = CInt(QUALITY * PACKET_DELAY / 1000)
Dim stream As NetworkStream = client.GetStream
Dim response As String
Dim by() As Byte
response = "HTTP/1.1 200 OK" & vbCrLf & _
"Date: " & Date.Now.ToUniversalTime.ToLongTimeString & vbCrLf & _
"Server: Grab.fm Last.fm Streaming Proxy" & vbCrLf & _
"Connection: Close" & vbCrLf & vbCrLf
'"Content-Type: audio/mpeg" & vbCrLf & vbCrLf
'"Accept(-Ranges): bytes()" & vbCrLf & _
by = System.Text.Encoding.ASCII.GetBytes(response)
stream.Write(by, 0, by.Length)
Do While client.Connected
If b.StackLength > 0 Then
by = b.Pop(PACKET_SIZE)
If client.Connected Then
Try
stream.Write(by, 0, by.Length)
Catch ex As Exception
WriteToDebug("Streamen an einen Client abgebrochen:" & _
"", enDebugLevel.dlNote, ex, False)
client.Close()
Exit Sub
End Try
End If
Threading.Thread.Sleep(PACKET_DELAY)
End If
Loop
client.Close()
End Sub
Public Sub Disconnect()
client.Close()
End Sub
#Region "DelayThread"
''' <summary>
''' Verzögert die Threadausführung. Reduziert CPU-Last dramatisch.
''' </summary>
''' <param name="milliseconds"></param>
''' <remarks></remarks>
Private Sub DelayThread(ByVal milliseconds As Integer)
Threading.Thread.Sleep(milliseconds)
End Sub
#End Region
End Class
End Namespace ----------------------------------------Weiter mit Teil 3----------------------------------------- |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|