tcp listener loop

Shooter2k

Erfahrenes Mitglied
Hallo Forum,
ich habe eine Frage zu meinem Tcp-listener. Als Konsolenprogramm wie in dem Beispiel hier: http://msdn.microsoft.com/de-de/library/system.net.sockets.tcplistener.aspx, läuft es einwandfrei. while, try etc.. Bloß wie baue ich das in ein Windows-Form ein?

Könnte man das vieleicht in einen "Timer" einbauen? Mit Winsock gab es ein "DataArrival" .Bisher habe ich das alles in ein "form_load" gepackt, was allerdings nicht ganz rund läuft, da das Serverform erst erscheint, wenn ich einen Text geschickt habe. Und ich kann immer nur einmal einen Text über den Client schicken, danach muss ich das Form neustarten. Wenn das auch über den Timer geht, kann ich die Variable Server irgendwie "Global" machen, um im listening_timer_Tick damit zu arbeiten? "Ist verbunden, ist nicht verbunden etc.."

Hier ist mein bisheriger VB/.net code:

Code:
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic
Imports System.Net.NetworkInformation


Public Class server_frm



    Private Sub server_frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '###############################
        Dim Addresslist() As IPAddress = _
   Dns.GetHostByName(Dns.GetHostName()).AddressList
        ' Dim IPs As IPAddress

        ' alle IP-Adressen auflisten


        'ip = Addresslist(0).ToString
        Dim ipaddy As String

        ipaddy = Addresslist(0).ToString

        tf_ip.Text = ipaddy

        Dim server As TcpListener
        server = Nothing

        ' Set the TcpListener on port 13000.
        Dim port As Int32 = 13000

        Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")

        server = New TcpListener(localAddr, port)

        ' Start listening for client requests.
        server.Start()

        Try

            ' Buffer for reading data
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            tf_status.Text = "Warten auf Verbindung"

            Dim client As TcpClient = server.AcceptTcpClient()
            tf_status.Text = "Verbunden"


            data = Nothing

            ' Get a stream object for reading and writing


            Dim stream As NetworkStream = client.GetStream()

            Dim i As Int32

            ' Loop to receive all the data sent by the client.
            i = stream.Read(bytes, 0, bytes.Length)

            data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
            tf_status2.Text = data


           

        Catch ex As Exception

        End Try


    End Sub

    Private Sub listening_timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles listening_timer.Tick
        'loop here?
    End Sub
End Class

Danke für die Hilfe
 
Zurück