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-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Beispiel Server 
Autor: Snoopy
Datum: 11.06.09 20:16

Ich habe mal was *zusammengezimmert*. Es beinhaltet das nötigste um multiple Client-Verbindungen
aufzubauen. Um das Error-Handling musst Du dich dann selber noch drum kümmern.

Imports System.Net
Imports System.Net.Sockets
 
Public Class Server
   Private Const DataBufferSize As Integer = 2048
   Private DataBuffer(DataBufferSize) As Byte
 
   Private m_Port As Integer
   Private m_IPAddress As String
   Private m_ClientList As List(Of TcpClient)
 
   Private myListener As TcpListener
 
   Public Sub New(ByVal IPAddress As String, ByVal Port As Integer)
      m_IPAddress = IPAddress
      m_Port = Port
   End Sub
 
   Public Sub [Start]()
      Try
         m_ClientList = New List(Of TcpClient)
         Dim localAddr As IPAddress = IPAddress.Parse(m_IPAddress)
         myListener = New TcpListener(localAddr, m_Port)
         myListener.Start()
 
         ' Asynchrone Verbindung initialisieren
         myListener.BeginAcceptTcpClient(New AsyncCallback(AddressOf _
           DoAcceptTcpClientCallback), myListener)
      Catch ex As Exception
         Throw ex
      End Try
 
   End Sub
 
   Public Sub [Stop]()
      If Not myListener Is Nothing Then
         For Each c As TcpClient In m_ClientList
            c.Close()
         Next
         myListener.Stop()
      End If
   End Sub
 
   ''' <summary>
   ''' Hier kommen die Verbindungsversuche von Clients an
   ''' </summary>
   Private Sub DoAcceptTcpClientCallback(ByVal ar As IAsyncResult)
      Try
         Dim listener As TcpListener = CType(ar.AsyncState, TcpListener)
 
         ' Das ist der Client, der eine Verbindung aufbaut
         Dim client As TcpClient = listener.EndAcceptTcpClient(ar)
 
         ' Client in eine List(of TCPClient) übernehmen
         m_ClientList.Add(client)
 
         ' Asynchrones Lesen vom Client initialisieren
         client.GetStream.BeginRead(DataBuffer, 0, DataBufferSize, AddressOf _
           DoReadAsync, client)
 
         ' Den Listener wieder auf eingehende Verbindungsversuche einstellen
         listener.BeginAcceptTcpClient(AddressOf DoAcceptTcpClientCallback, _
           listener)
      Catch ex As ObjectDisposedException
         '...
      End Try
   End Sub
 
 
   ''' <summary>
   ''' Hier sendet ein Client Daten
   ''' </summary>
   Private Sub DoReadAsync(ByVal ar As IAsyncResult)
      Dim m_Client As TcpClient = CType(ar.AsyncState, TcpClient)
      Dim BytesRead As Integer
      Dim strMessage As String
 
      Try
         SyncLock m_Client.GetStream
            BytesRead = m_Client.GetStream.EndRead(ar)
 
            If BytesRead < 1 Then
               ' Client hat die Verbindung getrennt
               Return
            End If
 
            ' Hier sind die empfangenen Daten vom Client
            ' Damit kannst Du dann arbeiten.
            strMessage = System.Text.Encoding.Default.GetString(DataBuffer, 0, _
              BytesRead)
            Debug.WriteLine(strMessage)
 
 
            m_Client.GetStream.BeginRead(DataBuffer, 0, DataBufferSize, _
              AddressOf DoReadAsync, m_Client)
         End SyncLock
      Catch exObjectDisposed As ObjectDisposedException
         ' Fehlerbehandlung hier einbauen
      Catch ex As Exception
         ' Fehlerbehandlung hier einbauen
      End Try
   End Sub
 
End Class
Hier eine Clientverbindung...
Imports System.Net
Imports System.Net.Sockets
 
Public Class Form1
   Private myServer As New Server("127.0.0.1", 1234)
   Private myClient As TcpClient
 
   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
     Handles Me.Load
      myServer.Start()
   End Sub
 
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
     System.EventArgs) Handles Button1.Click
      For x As Int16 = 1 To 10
         myClient = New TcpClient
         myClient.Connect("127.0.0.1", 1234)
         If myClient.Connected Then
            Dim w As New IO.StreamWriter(myClient.GetStream, _
              System.Text.Encoding.Default)
            w.Write(String.Format("Client Nummer {0} sendet Daten zum Server", _
            x.ToString))
            w.Flush()
         End If
      Next
   End Sub
 
End Class

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TCP Listener empfängt nur von einem Client Daten3.870Heckenpenner09.06.09 15:32
Re: TCP Listener empfängt nur von einem Client Daten2.893ModeratorFZelle09.06.09 16:17
Re: TCP Listener empfängt nur von einem Client Daten2.704Heckenpenner09.06.09 16:33
Re: TCP Listener empfängt nur von einem Client Daten2.797ModeratorFZelle09.06.09 17:54
Re: TCP Listener empfängt nur von einem Client Daten3.006Heckenpenner10.06.09 09:20
Re: TCP Listener empfängt nur von einem Client Daten2.722Heckenpenner10.06.09 09:20
Re: TCP Listener empfängt nur von einem Client Daten2.760ModeratorFZelle10.06.09 10:10
Re: TCP Listener empfängt nur von einem Client Daten2.690Heckenpenner10.06.09 10:37
Re: TCP Listener empfängt nur von einem Client Daten2.745ModeratorFZelle10.06.09 11:54
Re: TCP Listener empfängt nur von einem Client Daten2.694Heckenpenner10.06.09 14:46
Re: TCP Listener empfängt nur von einem Client Daten2.650ModeratorFZelle10.06.09 16:20
Re: TCP Listener empfängt nur von einem Client Daten2.678TobiasS10.06.09 20:52
Re: TCP Listener empfängt nur von einem Client Daten2.670ModeratorDaveS10.06.09 21:08
Re: TCP Listener empfängt nur von einem Client Daten2.718TobiasS10.06.09 21:16
Re: TCP Listener empfängt nur von einem Client Daten2.714ModeratorDaveS10.06.09 21:22
Re: TCP Listener empfängt nur von einem Client Daten2.787Snoopy10.06.09 21:23
Re: TCP Listener empfängt nur von einem Client Daten2.703TobiasS10.06.09 21:27
Re: TCP Listener empfängt nur von einem Client Daten2.699ModeratorDaveS10.06.09 21:40
Re: TCP Listener empfängt nur von einem Client Daten2.633TobiasS10.06.09 22:21
Re: TCP Listener empfängt nur von einem Client Daten2.677ModeratorDaveS10.06.09 21:27
Re: TCP Listener empfängt nur von einem Client Daten2.656Snoopy10.06.09 21:34
Re: TCP Listener empfängt nur von einem Client Daten2.712Heckenpenner11.06.09 10:49
Re: TCP Listener empfängt nur von einem Client Daten2.692ModeratorFZelle11.06.09 13:55
Re: TCP Listener empfängt nur von einem Client Daten2.680Heckenpenner11.06.09 15:01
Re: TCP Listener empfängt nur von einem Client Daten2.787ModeratorDaveS11.06.09 16:09
Re: TCP Listener empfängt nur von einem Client Daten2.667Heckenpenner11.06.09 17:53
Beispiel Server3.406Snoopy11.06.09 20:16
Re: TCP Listener empfängt nur von einem Client Daten2.753ModeratorDaveS11.06.09 21:12
Re: TCP Listener empfängt nur von einem Client Daten2.799Heckenpenner12.06.09 08:15

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-2024 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