Multiserver (TCP)

    • VB.NET

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

      Ok, mein Freund war nicht in meinen Netzwerk.
      Und mit den festen Hostnamen. Das müsste doch dann jeder der einzelnen Benutzer machen, damit das pogramm die feststehenden Namen hat, und alle den selben Histnamen beziehen, oder?
      Gibt es nicht auch eine Funktion, die das automatisch macht?

      Myrax schrieb:

      Im Router kann man meist so eine dynamische DNS (ich denke das ist der richtige Ausdruck) automatisch aktualisieren lassen.

      Steht doch da? dDNS verteilt deine ServerIP immer weiter an alle User.
      Wenn das ordentlich arbeitet wird nie einer deiner Nutzer was davon merken^^

      Sobald der Client sich an den Server wendet ist das Spiel klar. Spannend wären eher so Spielchen wie "Hostmigration", aber dafür seid ihr vermutlich zu wenige.
      Sonst könnte immer ein Client die Serverrolle übernehmen sobald der Server dieses Clients abschmiert. Dann müsste man aber auch alle Clients an alle Clients senden...ach egal^^
      moin

      ich bekomm es einfach nicht hin...
      der chat ansich is ja super nur ich baue mit ein paar leuten ein neues game ;) und wir haben uns gedacht wir bauen uns eine multiplayerplattform und ich hab mich dan dazu bereiterklärt eine zu bauen ;)
      jetzt wollte ich den chat hier dazu benutzen bzw als grundgerüst benutzen doch allerdings komm ich nit weiter... ich bin kein profi in vb und hab auch nochnie sonderlich viel gemacht sorry

      also ich bekomme die "online-userliste" einfach nicht hin ich kann da machen was ich will alles falsch :( ich brauch eine liste indem man auch auf den user/chatter draufklicken kann und ihm eine private nachricht schreiben kann und auf sein profil (auf der homepage vllt mit iframe eingebunden) draufklicken kann aalso müsste der user in eine liste sein die anklickbar wäre...
      ganzwichtig wäre ein chatprotokoll... also eine datei die dne chat komplett mitschreibt clinet und (ganz wichtig) serverseitig...

      würde mich freuen wenn ihr mir ambesten das mit der onlineuser schonmal bauen könntet ich bekomm es einfach nicht hin :( ich bin da irgentwie zu unfähig für sorry...
      Du kannst ja bei jedem join / left ein Ereignis auslösen:
      Join:
      Der joinende User wird einer Liste geaddet
      Left:
      Der leftende User wird von der Liste entfernt
      Und dann z.b. wenn man auf nen button klickt, wird eine spezielle Zeile gesendet, z.b:
      "Command:UserList" dann schreibt der Server die Liste halt zurück :)

      Grüße
      Da fängt es ja bei mir schon an xD wie bau ich soeine funktion ein? Ich will nit einfach ein code haben denbirgentwie zs aus dutzende forenbeiträge kopierennsondern ich will den code verstehen und auch genau wissennwarum so und nit anders xD

      Man müsste ja zum server ein befehl senden /"/join hans" der server sendet dan diesen befehl an alle anderennclients weiter also müsste der client ja auch was mit dem befehl anfangen können und genau da liegt eben mein problem... ich habbsowas nochnie mit vb genacht nur mal eben mit buttons andere befehle gemacht als test mehr oder weniger das alles kein problem...

      Wäre euch dankbar wenn ihr mir sagen könntet wie man soeine funktionneinbauen tut und mir auch gleich denncode erklären sonst bringt mir das reingarnix
      Du musst die bei entsprechendem Request Clientliste list mit ForEach durchgehen. Dann kannst du dem Client, der die Client-List angefragt hat, mit seinem StreamWriter sie schicken.

      VB.NET-Quellcode

      1. ' Nachricht bekommen - message stellt hier einen String dar, welcher die Nachricht enthält - vorher festgelegt; currentClient stellt hier eine Connection dar, welcher gerade schreibt
      2. If message = ".getclientlist" Then 'o.Ä.
      3. For Each user As Connection in list
      4. currentClient.streamw.WriteLine(user.Nickname)
      5. Next
      6. End If

      So ist das zu realisieren.
      ich habs ein bissle anders gelöst aber funzt perfekt bei mir :)
      doch jetzt habe ich ein ganz anderes problem...
      kann es vllt sein das der server irgentwann einfach die verbindung unterbricht? nach sagen wir mal 10 min wenn man nix schreibt? wenn ja wie kann man das verhindern? ich will das die verbindung dauerhaft besteht...

      und wie bekomm ich jetzt noch smilies in mein chat rein? oder eben so texteffekte wie zb fett/unterstrichen/kursiv... oder eben noch eine andere textfarbe? aber ds is zurzeit noch unwichtig :D
      nächstes problem wäre... mein tcp server ist mit einem ftp server verbunden... doch wenn er sich verbindet zum ftp server dauert es bei mir "fast" eine minute... also er läd dan eine minuten den ftp server... bei meinem bruder läuft es ehr normalschnell ab (ca 1 sekunde wartezeit) woran kann das liegen?

      und jaklar jetzt sehen natürlich meine logindaten vom ftpserver im programm drinne.. wie kann ich dich so machen das man sie nicht herrausfinden kann mit anderen programmen? ich kam auf die idee das der tcp server dem clienten die logindaten zum ftp zusendet somit würde man die daten auchnicht im code sehen... hier gibt es ja als turtorial wie man sich mit einer datenbank/mysql einloggenkann (wollte ich als login bei mir einbauen) da wird ja was mit hash geredet?? sie die daten dan sicher oder genau so unsicher?
      Hallo,

      wie mache ich es denn dass die User welche connected sind als Variable ausgegeben werden? Bin dazu nicht fündig geworden..
      Dann noch eine Frage: Wie kann ich eine Nachricht nur an einen User senden wie z.B. "Du bist eingeloggt" oder so.

      mit freundlichen grüßen
      reasonDEV
      Hi
      Invoke aufrufen musst du bei Windows Forms nur, um den Thread zu wechseln, in dem die Ausgabe erfolgt, da das Message-System das so benötigt. Es ist trotzdem ratsam, den Thread zu wechseln, da sonst der aktuelle Thread solange blockiert, bis die Konsolenausgabe fertig ist (zumindest so weit ich weiß). Zum Beispiel so:

      VB.NET-Quellcode

      1. System.Threading.ThreadPool.QueueUserWorkItem(Sub(o)
      2. Console.WriteLine("State")
      3. End Sub)

      Wenn keine Threads ausm Threadpool verfügbar sind, wird solange gewartet, bis wieder einer frei ist oder du zusätzliche zulässt.

      Gruß
      ~blaze~
      Hallo Leute,
      Ich bin mit dem Tutorial ganz zufrieden. ich bin derzeit dabei an einem Chat zu arbeiten der eine Userliste beinhaltet.
      In der Liste sollen allerdings nur die angezeigt werden, die mit dem Server verbunden sind.

      Wie muss ich das an dem Client einbauen hab den dreh dafür noch nicht so wirklich rausgefunden.

      ^^

      Da ich an meinem Multiserver nix mehr mache, stell ich ihn mal euch zur verfügung:

      mfg

      gfc
      Dateien
      • Module1.vb

        (17,34 kB, 104 mal heruntergeladen, zuletzt: )
      @gfcwfzkm

      Ist zwar sehr schön, dass Du Dein Werk zu Verfügung stellst. Jedoch ein paar Fehler, die Du ausbessern solltest, bevor Du es veröffentlichst.

      Du codest ohne OPTION STRICT ON, das ist schon mal ein Unding. Bitte ändern. Du nutzt ein paar veraltete Methoden des Frameworks (Dns.Resolve() z. B.).

      Wenn ich es auf den ersten Blick richtig sehe, dann läuft jeder Client in nem Extra-Thread (korrigier mich, wenn ich falsch liege, hab nur nen kurzen Blick drauf geworfen). Das wird den Server mit zunehmender Userzahl in die Knie zwingen. Das Async-Modell ist hier wesentlich effizienter.

      Schau halt nochmal drüber....
      Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
      Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
      Habe ein 8Kern PC (eig. 4. 4 relle, 4 virtuelle :thumbsup: ), da ist es mir relativ egal, wieviel Threads ich einbaue ^^.
      Und das Teil hat auch ein meinem 1Kern Tablet gefunzt, sehe also darin kein Problem.

      Zum Thema Option Strict:
      Mal sehen, ob ich's auf OpSt On setzte, arbeite eig. immer mit Off.

      mfg

      Probleme mit Button1.Click

      Hallo alle zusammen,

      ich hoffe ich frage nichts was auf den letzten 34 Seiten bereits behandelt wurde. Also ich habe den Code geschrieben und bekomme als Fehlermeldung, dass eine "End Of"-Anweisung fehlt bei Button1.Click . Hier die entsprechende Zeile:

      Private
      Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Button1.Click

      Habe ich vergessen etwas zu deklarieren ?

      Ich hoffe ihr könnt mir weiterhelfen.

      Gruß

      Said