|
| |

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 ClassLiebe Grüße,
Christian |  |
 | 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 |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|
| |
|
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
|
|