vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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 - Ein- und Umsteiger
Ein Server mehrere Clients - meine Klasse 
Autor: MeisterEngel
Datum: 29.10.05 10:17

Hallo, ich bin gerade an meinem ersten VB .NET Projekt. Bin umgestiegen von VB 6. Dazu nun meine erste Frage:
Würde meine Klasse funktionieren, um Clientverbindungen aufzunehmen und ein gleichzeitiges erhalten von Clientnachrichten zu ermöglichen??
Für Kritik und Anregungen bin ich sehr dankbar, da ich noch nicht so viel Erfahrung auf dem Gebiet der Client/Server-Programmierung habe.

Meine Klasse:
Imports System.Net.Sockets
Imports System.Net
Imports System.Threading
Imports System.Text
 
Public Class clsServer
    Dim server As New Socket(AddressFamily.InterNetwork, _
                                    SocketType.Stream, ProtocolType.IP)
    Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
    Dim clientSocket As Socket
    Dim clients As Collection
 
    Dim ipAdress As IPAddress
    Dim WarteThread As Thread
 
    Dim lsvClients As ListView
 
    Public Property ip() As IPAddress
        Get
            Return ipAdress
        End Get
        Set(ByVal value As IPAddress)
            ipAdress = value
        End Set
    End Property
 
 
    Public ReadOnly Property HostInfo() As IPHostEntry
        Get
            Return ipHostInfo
        End Get
    End Property
 
    Private Sub wait()
        clientSocket = server.Accept()
        Console.WriteLine("Verbindungsversuch des Client gelungen")
        Dim clientPort As Int32 = CType(clientSocket.RemoteEndPoint, _
                                        IPEndPoint).Port
        Dim clientIP As String = CType(clientSocket.RemoteEndPoint, _
                                        IPEndPoint).Address.ToString
 
        'Neuen Client in Collection aufnehmen
        clients.Add(clientSocket)
        'Neuen Client in ListView aufnehmen
        lsvClients.Items.Add(clientIP)
 
        'Thread: Clientnachrichten empfangen -> Start
        Dim objReceiver As New clsReceiver
        Dim del As ThreadStart = New ThreadStart(AddressOf objReceiver.receive)
        Dim EmpfangsThread As Thread = New Thread(del)
        objReceiver.client = clientSocket
        EmpfangsThread.Start()
 
        Console.WriteLine("Remotedaten: {0}/Port {1}", clientIP, clientPort)
        Dim localPort As Int32 = CType(clientSocket.LocalEndPoint, _
          IPEndPoint).Port
        Dim localIP As String = CType(clientSocket.LocalEndPoint, _
        IPEndPoint).Address.ToString
        Console.WriteLine("Lokaldaten: {0}/Port {1}", localIP, localPort)
    End Sub
 
    Public Class clsReceiver
        Public client As Socket
        Dim bytes(1024) As Byte
 
        Public Sub receive()
            Do While True
                Dim countBytesFromClient As Int32 = client.Receive(bytes)
                Dim bytesFromClient As String = Encoding.ASCII.GetString(bytes, _
                  0, _
                                                countBytesFromClient)
 
                Console.WriteLine("Nachricht vom Client erhalten: " & _
                  bytesFromClient)
            Loop
        End Sub
    End Class
 
 
    Public Sub start()
        Try
            Dim localEP As New IPEndPoint(ipAdress, 1500)
            Dim del As ThreadStart = New ThreadStart(AddressOf wait)
            WarteThread = New Thread(del)
 
            server.Bind(localEP)
            Try
                server.Listen(1)
                Console.WriteLine("Server lauscht auf IP: " & ipAdress.ToString)
                Console.WriteLine("Server lauscht auf Hostname: " & _
                  ipHostInfo.HostName.ToString)
                Console.WriteLine("Warte auf Clientverbindung...")
                'Thread: Clientverbindung abwarten -> Start
                WarteThread.Start()
            Catch ex As Exception
                Console.WriteLine(ex.ToString)
            End Try
        Catch ex As ArgumentNullException
            Dim frmAdapter As New frmAdapter(Me)
            frmAdapter.ShowDialog()
            start()
        End Try
    End Sub
 
    Public Sub stopp()
        Try
            clientSocket.Close()
        Catch ex As Exception
        Finally
            WarteThread.Abort()
            Console.WriteLine("Server beendet...")
        End Try
 
    End Sub
 
    Public Sub send(ByVal client As Socket, ByVal data As String)
        Dim message() As Byte = Encoding.ASCII.GetBytes(data)
        client.Send(data)
    End Sub
 
    Public Sub New(ByVal lv As ListView)
        lsvClients = lv
    End Sub
End Class
Liebe Grüße,
Christian
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ein Server mehrere Clients - meine Klasse810MeisterEngel29.10.05 10:17
Re: Ein Server mehrere Clients - meine Klasse501Maywood31.10.05 10:29
Re: Ein Server mehrere Clients - meine Klasse529MeisterEngel31.10.05 11:23
Re: Ein Server mehrere Clients - meine Klasse506Maywood01.11.05 12:25
Re: Ein Server mehrere Clients - meine Klasse494MeisterEngel01.11.05 13:56

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