|
| |

VB.NET - Fortgeschrittene| Re: UDP Server und Client | |  | | Autor: adilette | | Datum: 22.01.06 18:38 |
| Hallo zusammen,
habe gerade eine mögliche Lösung gefunden. Ich habe die sen-Funktion in eine while(1) Schleife gesetzt und das wiederum in einen Thread:
Sub Main()
'Erstellen des TCP-Threads für den Empfang des ZCodes und der UserID von
' der Zentrale
Dim tcp As New ThreadStart(AddressOf tcpZentrale)
Dim tcpThread As New Thread(tcp)
'Erstellen des UCP-Threads für das Senden des ZCodes an den Client
Dim udp As New ThreadStart(AddressOf udpSenden)
Dim udpThread As New Thread(udp)
Dim anfrage(10), bestaetigung(10) As Byte
ReDim arrAnzahlUser(anzUser - 1)
Dim ID1, ID2 As UserDaten
'User 1
ID1.code = "1100"
ID1.UserID = "01"
'User 2
ID2.code = "2200"
ID2.UserID = "02"
arrAnzahlUser(0) = ID1
arrAnzahlUser(1) = ID2
'TCP-Thread starten:
'tcpThread.Priority = ThreadPriority.AboveNormal
tcpThread.Start()
'Thread starten und gleich in die Warteschlange versetzen
udpThread.Start()
udpThread.Suspend()
Dim IpHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
Dim serverEndPoint As New IPEndPoint(IpHostInfo.AddressList(0), 3333)
'Serverdaten:
Console.WriteLine("Port des Servers: {0}", serverEndPoint.Port.ToString())
Console.WriteLine("IP des Servers: {0}" & CrLf, _
serverEndPoint.Address.ToString())
While (1)
Dim server As New Socket(AddressFamily.InterNetwork, _
SocketType.Dgram, ProtocolType.Udp)
'Das Binden des ServerSockets ist für die ReceiveFrom-Funktion
' vorausgesetzt.
server.Bind(serverEndPoint)
Try
'Empfangen des Codes
server.ReceiveFrom(anfrage, clientEndPoint)
Console.WriteLine("Habe Anfrage des Client erhalten: {0}" & CrLf, _
Encoding.ASCII.GetString(anfrage))
Dim user As String = Encoding.ASCII.GetString(anfrage).TrimEnd( _
NullChar)
Zcode = vergleich(user, arrAnzahlUser)
strCode = Encoding.ASCII.GetBytes(Zcode)
'Clientdaten:
Console.WriteLine("Port des Client: {0}", _
clientEndPoint.Port.ToString())
Console.WriteLine("IP des Client: {0}" & CrLf, _
clientEndPoint.Address.ToString())
'Senden des Codes
server.SendTo(strCode, clientEndPoint)
Console.WriteLine("Code an Client gesendet: {0}" & CrLf, zcode)
udpThread.Resume()
'Bestätigung abwarten
Console.WriteLine("Warte auf Bestätigung des Client...")
Do
server.ReceiveFrom(bestaetigung, clientEndPoint)
Loop While Not (Encoding.ASCII.GetString(bestaetigung).TrimEnd( _
NullChar) Like "OK")
Console.WriteLine("Habe Bestätigung erhalten: {0}" & CrLf, _
Encoding.ASCII.GetString(bestaetigung).TrimEnd(NullChar))
udpThread.Suspend()
Catch e As Exception
Console.WriteLine(e.ToString())
Finally
server.Close()
End Try
End While
Console.ReadLine()
End Sub
'UDP-Thread: nur die send-Funktion für das erneute Senden des ZCodes ist
' in diesem Thread enthalten.
Public Sub udpSenden()
While (1)
'Clientdaten:
Thread.Sleep(2000)
'Senden des Codes
server.SendTo(strCode, clientEndPoint)
Console.WriteLine("Code an Client gesendet: {0}" & CrLf, zcode)
End While
Console.ReadLine()
End SubAber danke für die Antwort, ich werde mal die anderen Beiträge durchsuchen. Es gibt bestimmt noch bessere Lösungen.
Ein weiteres Problem bei meiner ist, falls die Bestätigung nie eintrifft, wird der Code alle 2 Sekunden gesendet, für immer... tja...  |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere 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
|
|