VB - IRC-Chat-Client hängt beim Start

a1Pha

Grünschnabel
Hallo liebe Community,

ich versuche in den letzten Tagen verzweifelt, für mein Internetradio einen abgespeckten IRC-Client mit eingebautem Stream-Tuner in VB .NET zu bauen. Der Stream-Teil funktioniert dank eines Windows Media Player - Controls ganz gut, nur der IRC-Client zickt rum. Das Problem besteht darin, dass der Client sich zwar zum Server verbindet, aber dann auch nichts weiter macht. Sprich - das Programm hängt. Zum besseren Verständnis poste ich hier mal den Code sowie einen Screenshot vom "letzten Zustand" des Programms. Ich hoffe, mir kann hier jemand weiterhelfen, ich kenne mich leider nicht wirklich in VB aus :)

Vielen Dank im Voraus,
Euer a1Pha

Code:
Public Class Form1
    Dim botname As String = "test"
    Dim send As String
    Dim con As New System.Net.Sockets.TcpClient

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        con.SendBufferSize = 5000
        con.SendTimeout = 5
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
    End Sub

' vorläufige funktion, filtert unnötiges aus dem eingang

    Public Function CleanString(ByVal strSource As String) As String
        On Error GoTo CleanStringErr

        ' convert tabs to spaces first
        strSource = Replace(strSource, vbTab, vbCrLf)

        ' convert all CRLFs to spaces
        strSource = Replace(strSource, vbCrLf, " ")

        ' Find and replace any occurences of multiple spaces
        Do While (InStr(strSource, "  "))
            ' if true, the string still contains double spaces,
            ' replace with single space
            strSource = Replace(strSource, "  ", " ")
        Loop

        ' Remove any leading or training spaces and return
        ' result
        CleanString = Trim(strSource)
        Exit Function

CleanStringErr:
        ' Insert error-handling code here
    End Function

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer1.Tick
        Dim r As Integer
        Dim bla As System.IO.Stream
        Dim stringle As String
        Dim bytebuffer(5000) As Byte
        bla = con.GetStream
        bla.Read(bytebuffer, 0, bytebuffer.Length - 1)
        If bytebuffer.Length > 0 Then
            For r = 0 To bytebuffer.Length - 1
                stringle = stringle & Chr(bytebuffer(r))
            Next
        End If

        stringle = CleanString(stringle)
        'stringle = Replace(stringle, vbLf, vbCrLf)
        'stringle = Replace(stringle, vbCr & vbCr, vbCr)

        speech.Items.Add(stringle)
        If InStr(LCase(stringle), "hostname") > 0 Or InStr(LCase(stringle), "ident") > 0 Then
            sending("NICK " & botname)
            sending("USER " & botname & " blackhack.kicks-ass.org a1pha.de :" & botname)
            sending("JOIN #client.radio.worx")
        End If
        If InStr(stringle, "PING") > 0 Then 'And InStr(LCase(stringle), "privmsg") <= 0 Then
            Dim r2 As Integer
            Dim b As String
            r2 = InStr(LCase(stringle), "ping")
            r2 = r2 + 5
            b = Mid(stringle, r2, Len(stringle))
            sending(b)
        End If
    End Sub

    Public Sub sending(ByVal send)
        send = send & vbCrLf
        Dim derstream As System.IO.Stream
        Dim k As Integer
        Dim r As Integer
        Dim bytebuffer(5000) As Byte
        derstream = con.GetStream
        For r = 1 To Len(send)
            bytebuffer(r - 1) = Asc(Mid(send, r, 1))
            k = k + 1
        Next r
        derstream.Write(bytebuffer, 0, k)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            sending(TextBox1.Text)
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        con.Connect("a1pha.de", 6667)
        timer1.Enabled = True
    End Sub
End Class

//edit: timer1 ist auf "1" gesetzt, habe aber auch schon mit anderen werten gespielt, ändert nichts am zustand. button3 sorgt für den verbindungsaufbau, button1 und button2 sind die "stop" und "play" - buttons.

//edit2: http://picpaste.de/vbasic_1.jpg << da ist der screenshot, sorry.
 
Zuletzt bearbeitet:
Zurück