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 - Fortgeschrittene
Re: TCP Listener (Server) 
Autor: crivi
Datum: 09.06.05 00:03

Hallo

Mein Code sieht nun so aus:

Imports System
Imports System.Threading
Imports System.Net.Sockets
Imports System.Text
Public Class TcpSvr
    Public MaxThreads As System.Int16
    Private ActiveThreads As Long
    Private ThreadIndex As System.Int16
    Private StopListener As System.Boolean
    Private Listener As TcpListener
    Public Port As System.Int32
    Private ASCII As ASCIIEncoding
 
    Public Sub New()
        StopListener = False
        ActiveThreads = 0
        ASCII = New ASCIIEncoding
    End Sub
 
    Public Sub Start()
        Console.WriteLine("Listener starten...")
        Dim ipAdd = System.Net.IPAddress.Parse("10.2.0.15")
        Listener = New TcpListener(ipAdd, Port)
        Listener.Start()
        MultiThread()
        Console.WriteLine("Listener stoppen...")
        Try
            Listener.Stop()
        Catch e As SocketException   'weiss nicht ob das wirklich 
        ' Socketexception heisst, habe nicht geguckt.
            ' vielleicht einen Logeintrag schreiben?
        End Try
    End Sub
 
    Public Sub MultiThread()
        Dim CurThreadStart As ThreadStart
        Dim CurThread As Thread
        Dim ThreadCount As System.Int16
        Console.WriteLine("MaxThreads: " + MaxThreads.ToString)
        Console.WriteLine("Threading starten...")
        While StopListener = False
            If Listener.Pending = False Then
                ' continue 
            End If
            If ActiveThreads = MaxThreads Then
                ' continue 
            End If
            Console.WriteLine("Request 1")
            CurThreadStart = AddressOf Request
            CurThread = New Thread(CurThreadStart)
            CurThread.Start()
            SyncLock CurThread
                System.Math.Min(System.Threading.Interlocked.Increment( _
                  ActiveThreads), ActiveThreads - 1)
            End SyncLock
        End While
    End Sub
 
    Public Sub Request()
        Console.WriteLine("Request bearbeiten")
        Dim CurThread As Thread
        Dim CurSocket As Socket
        Dim Buffer As Byte()
        Dim Bytes As System.Int32
        Dim Temp As System.String
        Buffer = New Byte(256) {}
        CurThread = Thread.CurrentThread
        CurSocket = Listener.AcceptSocket
 
        While StopListener = False
            If CurSocket.Available > 0 Then
                Try
                    Bytes = CurSocket.Receive(Buffer, Buffer.Length, 0)
                    Temp = ASCII.GetString(Buffer, 0, Bytes)
                    Console.WriteLine("Eingabe: " + Temp)
 
                    If Temp.Substring(0, 1) = "q" Then
                        CurSocket.Send(ASCII.GetBytes("schon Schluss?"))
                        StopListener = True
                    End If
                Catch e As Exception
                    Console.WriteLine("Fehler: " + e.Message)
                End Try
            End If
        End While
 
        CurSocket.Close()
 
        SyncLock CurThread
            System.Math.Max(System.Threading.Interlocked.Decrement( _
              ActiveThreads), ActiveThreads + 1)
        End SyncLock
    End Sub
End Class
Allerdings funktioniert es so nicht.

Kannst du das bei dir mal ausprobieren?

Vielen Dank

Gruss Raffi
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TCP Listener (Server)3.061crivi06.06.05 16:43
Re: TCP Listener (Server)1.249ReinhardH08.06.05 15:53
Re: TCP Listener (Server)1.303crivi09.06.05 00:03
Re: TCP Listener (Server)1.175crivi09.06.05 10:38
Re: TCP Listener (Server)1.296ReinhardH10.06.05 00:30

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