[VB .NET] Server-Client-Kommunikation im LAN-Netzwerk
lima-city → Forum → Programmiersprachen → Basic
beispiel
byte
code
dank
empfangen
ergebnis
fehler
funktion
http
kommunikation
netzwerk
port
senden
server
string
system
text
umfrage
url
zeile
-
Hallo,
ich möchte ein Umfrageprogramm schreiben (im LAN-Netzwerk).
Der Server soll den Clienten mitteilen über welche Punkte abgestimmt werden soll (feste Anzahl: 6)
Sobald derjenige, der an einem Clienten sitzt, abgestimmt hat, soll eine nur eine Nummer(1-6) an den Server übertragen werden, damit der Server weiß für was gestimmt wurde.
Nachdem jeder abgestimmt hat, soll der Server automatisch das Ergebnis an alle Clienten schicken:
sollte ungefähr so aussehen: ID(1-6)|Anzahl Stimmen
so dass der Client diesen String auswerten kann und das Ergebnis richtig darstellt.
Ich würde auch noch einige andere kleine Funktionen einbauen, die mich im Moment eher nicht interessieren, da ich nicht weiß, wie die Kommunikation zwischen Server und Client(en) funktioniert?!
Hab auch schon gegoogelt, aber ich finde nur Seiten, die mir nur ein bisschen helfen.
Habe gelesen, dass man es über einen TCPClient und einen TCPListener machen soll, weiß aber nicht wie.
Wenn mir das jemand erklären könnte, wäre echt super
MfG
Malanox -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Für die Kommunikation im LAN würde ich UDP statt TCP verwenden.
UDP ist einfacher aufgebaut als TCP und wird z.B. auch für Chats verwendet. TCP sollte verwendet werden, wenn es um wichtige Kommunikationen geht, da TCP über eine Datenflusssteuerung und Fehlerbehandlung verfügt.
Ein Beispiel für UDP-Kommunikation (Senden und Empfangen - Send and Receive) findest du hier:
http://www.codeproject.com/KB/IP/UDP_Send_Receive.aspx
Auf http://www.codeproject.com/ gibt es auch noch weitere Beispiele dazu. -
Danke für die Antwort!
Der Code schaut doch schon sehr vielversprechend aus
hab nur noch eine Frage zu diesem Code:
und zwar stehen bei "How to recieve" im 2 Absatz folgende Codezeilen:
ThreadReceive = New System.Threading.Thread(AddressOf ReceiveMessages)
ThreadReceive.Start()
Was genau bedeuted die erste Zeile?
MfG
----
Hat sich erledigt, funktioniert alls bestens.
Danke
Beitrag zuletzt geändert: 17.10.2009 16:19:12 von malanox -
Diese beiden Zeilen bewirken, dass die Funktion ReceiveMessages als Thread gestartet wird, das heißt diese läuft dann im Hintergrund und du kannst weiter auf dein Hauptfenster zugreifen.
Zu deiner Idee:
1. Hast du auf dem Server eine feste Liste von IP-Adressen gespeichert, an die jeweils die Umfrage verschickt werden soll, oder soll diese an jeden Computer im Netzwerk geschickt werden?
2. Hier ist noch ein Beispiel direkt von Microsoft
Importierte Namespaces
Imports System.Net.Sockets
Globale Variablen
Private LocalPort as Integer = 8800 'Empfaenger-Port
Funktion zum Senden
Private Sub SendData() Dim IP As String = "192.168.2.23" 'Beispiel IP Dim Port As Integer = 8800 'Sender-Port Dim RemoteEndPoint As New Net.IPEndPoint(Net.IPAddress.Parse(IP), Port) Dim Client As New UdpClient() Dim Text As String = "Herzlich Willkommen zur Umfrage!" & Chr(10) & Chr(10) & "Umfrage: <Frage>" & Chr(10) & Chr(10) & "1) Variante #1" & Chr(10) & "2) Variante #2" & Chr(10) & "3) Variante #3" & Chr(10) & "4) Variante #4" & Chr(10) & "5) Variante #5" & Chr(10) & "6) Variante #6" Try Dim Data() As Byte = System.Text.Encoding.UTF8.GetBytes(Text) Client.Send(Data, Data.Length, RemoteEndPoint) Catch Err As Exception 'Es ist ein Fehler aufgetreten End Try End Sub
Funktion zum Empfangen starten (in Hauptfunktion integrieren)
Dim ReceiveThread As New System.Threading.Thread(AddressOf ReceiveData) ReceiveThread.IsBackground = True ReceiveThread.Start()
'Funktion zum Empfangen
Private Sub ReceiveData() Dim Client As New UdpClient(LocalPort) Do Try Dim Data() As Byte = Client.Receive(Nothing) Dim Text As String = System.Text.Encoding.UTF8.GetString(Data) 'Die Variable Text enthält nun den Nachrichtentext MessageBox.Show(Text, "Umfrage") Catch Err As Exception 'Es ist ein Fehler aufgetreten End Try Loop End Sub
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage