vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
TcpClients und keine Antwort 
Autor: realkizZ
Datum: 04.09.07 03:09

Hi,
es ist schon spät, aber da ich morgen frei habe, verbringe ich etwas Zeit mit einem neuen Projekt. Dabei ist es jedoch zu erheblichen Problemen gekommen, bei denen ihr mir hoffentlich helfen könnt.

Ich habe zwei Klassen, einen Server und einen Client:

Server
Public Class Server
 
    Private Clients As New Collection(Of TcpClient)
    Private ClientCount As Integer = 10
    Private Listener As TcpListener
 
    Private ThreadSend As Thread
    Private ThreadHandshake As Thread
 
    Public Sub InitClass()
        Listener = New TcpListener(IPAddress.Parse("127.0.0.1"), 8000)
        Listener.Start()
 
        ThreadHandshake = New Thread(AddressOf Thread_ListenForRequests)
        ThreadHandshake.Start()
    End Sub
 
    Private Sub Thread_ListenForRequests()
        While True
            If Listener.Pending Then
                If Clients.Count < ClientCount + 1 Then
                    Clients.Add(Listener.AcceptTcpClient())
                End If
            End If
        End While
    End Sub
 
    Public Sub SendBroadcast()
        ThreadSend = New Thread(AddressOf Thread_SendBroadcast)
        ThreadSend.Start()
    End Sub
 
    Private Sub Thread_SendBroadcast()
        Dim DataBuffer As Byte()
        Dim Stream As NetworkStream
 
        For Each CurrentClient As TcpClient In Clients
            If CurrentClient.Connected Then
                Stream = CurrentClient.GetStream
                DataBuffer = System.Text.Encoding.ASCII.GetBytes("welcome")
                Stream.Write(DataBuffer, 0, DataBuffer.Length)
            Else
                'remove from collection
            End If
        Next
    End Sub
 
End Class
Client
Public Class Client
 
    Public Event DataReceived(ByVal Data As Byte())
 
    Private Client As TcpClient
    Private Stream As NetworkStream
 
    Private ThreadReceive As Thread
 
    Public Sub InitClass()
        Client = New TcpClient("localhost", 8000)
        Stream = Client.GetStream()
 
        ThreadReceive = New Thread(AddressOf Thread_ReceiveData)
        ThreadReceive.Start()
    End Sub
 
    Private Sub Thread_ReceiveData()
        Dim buffer(Client.ReceiveBufferSize) As Byte
 
        While Client.Connected
            If Stream.DataAvailable Then
                Stream.Read(buffer, 0, CInt(Client.ReceiveBufferSize))
                RaiseEvent DataReceived(buffer)
            End If
        End While
    End Sub
 
End Class
Ich beginne das Programm dann damit, diese Klassen jeweils einmal
zu instanzieren, beim Server zuerst InitClass, dann SendBroadcast
und beim Client nur InitClass aufzurufen. Das Problem ist, dass einfach
nichts passiert - keine Exception, Rückmeldung oder sonstiges.

Das ganze ist erst eine Art Prototyp, um das Prinzip zu verstehen, da ich
vorher nur mit WinSock unter VB6 gearbeitet habe und durch die Events
die Programmarchitektur einfacher war.

Über Hilfe würde ich mich wie immer freuen.
Danke im vorraus. MfG kizZ
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TcpClients und keine Antwort832realkizZ04.09.07 03:09
Re: TcpClients und keine Antwort473Maxro05.09.07 15:45

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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