Multiserver (TCP)

    • VB.NET

    Es gibt 854 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

      Hallo,

      ich habe gerade mit diesem Beispiel das Problem, dass die Verbindung zwischen Client und Server bei bestimmten Eingaben abreist. Wenn ich jede Nachricht fein mit der Entertaste abschicke, passiert nichts und die Verbindung ist stabil. Wenn ich aber vordefinierte Nachrichten ohne einbeziehung der Eingabetaste sende, dann reist die Verbindung ab, "has Exit" meldung auf der Serverseite.

      Hier mal meine Sendefunktion, die wird mit dem Zielnick und der Nachricht gefüttert:
      Public Function SendToClient(nick As String, tmp As String) As Boolean
      For Each c As Connection In list ' Liste der Clients durchlaufen
      Try
      If c.nick = nick Then
      c.streamw.WriteLine(tmp)
      c.streamw.Flush()
      Return True
      End If
      Catch
      Return False
      End Try
      Next
      End Function

      Ich bekomme diese Abbrüche nicht in den Griff. Kann man die Verbindung irgendwie absichern? Ich weiss ja nicht, was da unter der Oberfläche vor sich geht.

      Danke im Voraus

      Tschapajew
      Servus,

      Ok, bin dem Rätsel nun auf die Spur gekommen, vielleicht interessiert es und hilft ja auch jemandem. Die Verbindung mag es gar nicht, wenn man strings aus Einzelteilen Zusammenbaut und diese dann sendet. Ok, wenn alle Teile vorhanden sind, dann geht das schon gut. Aber in meinem Fall war ein Teil des Strings nicht vorhanden, also Nothing. Wenn man nun einen String, der Teilweise aus Nothing besteht, zu senden Versucht, bricht die verbindung sofort ab. Glaub, ich muss da dringend ein Try Catch drum bauen.

      LG

      Tschapajew
      Servus,

      ist es eigentlich ohne Größeren Aufwand auch möglich, neben den TCP-Verbindungen auch UDP in diesen Server einzubauen? Ich dachte mir, dass es möglich wäre, mittels der bereits aufgebauten TCP Connection eine UDP Verbindung zu erschaffen und damit weiter zu arbeiten. Kann mir mal jemand sagen, wie hier das Vorgehen ist?

      Danke im Voraus

      Tschapajew
      Naja UDP ist nicht verbindungsorientiert, da gibt es nicht diesen typischen Server Client wie bei TCP, also auch keine Streams. Du öffnest eine Verbindung, sendest ein Datagram, der Receiver empfängt es und damit hat es sich.

      Was möglich ist, ist das alle "Clients" die sich mit dem Receiver "verbinden" einer Liste hinzugefügt werden, wenn ein gewissen Marker im Datagram also zB "JOIN" vorhanden ist.

      Schickt der Client nun eine Nachricht wird es mit "MSG" gekennzeichnet, der Server empfängt die Nachricht und sendet seinerseits an alle Clients die erhaltene Nachricht.

      Dabei besteht die Client Liste aus IPEndPoints der jeweiligen Rechner.

      Ist länger her, falls Fehler bitte umgehend korrigieren.
      Danke.

      _
      Und Gott alleine weiß alles am allerbesten und besser.
      Hi,

      ja, so dachte ich mir das. Nur wie überführe ich die bereits bestehende TCP Verbindung aus dem hier besprochenen Beispiel in eine UDP Verbindung? Kann ich den bestehenden IP-Endpoint einer vorhandenen Funktion aus .NeT übergeben, deren Ergebnis ich dann wie im vorhandenen Beispiel in eine Liste lege?

      LG

      Tschapajew
      Du musst einen neuen Client erstellen. Wenn Du einen Client schließt, ist der nicht mehr zu gebrauchen.
      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

      Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
      Genauso wie Du den ersten funktionierenden Client erstellt hast. Da muss ja irgendwas in Deinem Code mit = New Client… oder As New Client… stehen. Sonst könntest Du später schließlich nicht schreiben Client.Close
      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

      Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
      Welchen Code hast Du, der jetzt nicht funktioniert? Von New bis Fehlermeldung.
      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

      Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
      Heyho, ich wollte mal fragen ob dieser Server/Client wirklich zuverlässig ist. Weil ich brauche einen zuverlässigen Server/Client der nicht abstürzt, schnell ist und sicher. Ich möchte ein multiplayer spiel bauen das halt konstant informationen über den Character (Position, aktuelles Fahrzeug, Aussehen etc.) sendet. Und dieser Server soll das halt alles handeln können.

      Jetzt die Frage an euch: Denkt Ihr das dieser Server/Client gut für so etwas ist?

      LG Andre
      Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

      Für VB.NET Entwickler: Option Strict On nicht vergessen!
      Wenn man ihn richtig aufsetzt: ja.
      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

      Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.