kostenloser Webspace werbefrei: lima-city


[VB .NET] Server-Client-Kommunikation im LAN-Netzwerk

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    malanox

    Kostenloser Webspace von malanox

    malanox hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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.
  4. Autor dieses Themas

    malanox

    Kostenloser Webspace von malanox

    malanox hat kostenlosen Webspace.

    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
  5. 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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!