Netzwerk-Tutorial ohne DLL (Game Maker Studio)

    • Studio
      Ja genau, das ist von FatalSleep. Bin in dem glücklichen Lage solche Texte auch in Englisch genießen zu können :D , das meinte ich mit Kontroverse, der eine meint weiterhin es wär ein Bug, aber fest steht, solange da nichts dran geändert wurde mit der neusten Version verhält es sich halt immernoch so. Wollte das einfach hier nur mal reinschreiben damit sich niemand wundert warum trotzdem mehr Leute joinen können.
      132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
      Hallo Ball of Steel,

      Ich habe diesen Thread einmal aus der Mottenkiste hervorgekramt, um keinen Neuen zu eröffnen. Erstmal: Ein gutes Tutorial. Es hat mir einen guten Einstieg in das Thema gegeben. Vielen Dank für die Mühe! Nun bin ich auf folgendes Problem gestoßen:
      Da es bei meinem eigenen Programmcode auftauchte, dachte ich zunächst es wäre mein Fehler. Dann habe ich deine eigenen Programme bei mir hochgeladen und sie getestet. Auch dort tauchte das Problem auf, was beim Ablauf des Spieles jedoch nicht zu bemerken war.
      Es geht um um folgenden Befehl:

      Quellcode

      1. server = network_create_server(network_socket_tcp, 6510, 16);

      Dieser Befehl wird in beiden Programmen ausgeführt, beim Client so wie beim Server. Wobei der Server natürlich als erstes gestartet wird.

      Da ich Probleme mit dem Empfang der Daten im Client hatte, habe ich mir die Variable server nach dem obigen Befehl ausgeben lassen. Wird der Server gestartet, so wird die Variable server auf 0 gesetzt. Starte ich danach den Client, wird die Variable server (im Client-Programm) dagegen auf -1 gesetzt, was wohl soviel heißt wie: hat nicht geklappt.

      Ich sitze jetzt schon seit einigen Stunden an diesem Problem und sehen gerade den Wald vor lauter Bäumen nicht mehr. Wo ist mein Denkfehler? Wieso kann der Client den Befehl nicht mehr ausführen, sobald der Server gestartet ist?
      Wenn ich den Client dagegen als erstes starte, wird die Variable server auf 0 gesetzt.
      Hey, also network_create_server(network_socket_tcp, 6510, 16); wird nur beim Server benutzt, da dieser ja den Server hostet/erstellt. Mit dem Client verbindest du dich dann mit network_connect(socket, url, port);. Den Fehler -1 bekommst du wahrscheinlich, weil du zwei Server mit der selben Addresse auf dem gleichen Port öffnen möchtest.

      MFG Dufner

      Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
      Ja, genau das habe ich mir eigentlich auch gedacht und mich gewundert. Aber im Programmcode von Ball of Steel wurden auf beiden Seiten Server mit demselben Port erstellt.

      Ich habe ein ähnliches Programm geschrieben und stelle über das asychnrone Event Network fest, dass die Clientseite überhaupt keine Nachrichten empfängt.
      Ich kann aber verfolgen, dass der Server im anderen Programm ständig Nachrichten versendet.

      In meinem Programm:
      Auf der einen Seite wurde ein Server mit

      network_create_server(network_socket_tcp, 6510, 16)


      erstellt, im anderen Programm ein Client mit

      client_socket = network_create_socket(network_socket_tcp).

      Anschließend wurde ein

      network_connect(client_socket, "127.0.0.1", 6510)

      ausgeführt. Dennoch empfängt das zugehörige Objekt keine Daten.

      Die Erstellung eines zweiten Servers habe ich nun aus eminem Programm herausgenommen. (Es würde mich aber interessieren, wieso Ball of Steel einen Server auf der Clientseite generiert hat. Das mus doch seinen Grund gehbat haben.)