UDP mit 39dll?

  • GM 6

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UDP mit 39dll?

    Hallo, Community!
    Ich bin gerade dabei mit der 39dll zu spielen und habe folgendes Problem:
    Es gibt ja zwei Arten zu verbinden (tcpconnect und udpconnect).
    Es heißt bei tcp connect:
    "creates a socket and connects to the ip and port"
    Und bei udpconnect steht:
    "Creates a udp socket."

    Ich möchte aber keinen UDP-Socket erstellen, sondern ich will mit einem verbinden.
    Und zwar mit der IP 127.0.0.1 und auf dem Port 3333. Wie verbinde ich jetzt mit einem UDP-Socket?

    ,-Megamag

    Magical dream time!
  • Jetzt ohne mich mit der 39dll selbst beschäftigt zu haben, sondern zu Sockets allgemein:
    Kommunikation über Sockets ist, als würdest du telefonieren; der Client ist der der anruft, und der Server der, der angerufen wird. Und die Sockets sind die Telefone. D.h. wenn du einen Server (bzw. generell einen anderen Dienst) "anrufen" willst, brauchst du als Client trotzdem ein Telefon (also einen Socket), um dies zu tun.

    D.h. erstellen musst du trotzdem einen Socket, und mit diesem kontaktierst du dann den Dienst, den du dort zu finden versuchst.
  • Ok, ich verstehe.
    Aber trotzdem weiß ich nicht, wie ich nun über UDP die abgeschickten
    Daten vom Server empfangen kann. Der Server ist überigens nicht mit
    dem GM gemacht, falls das wichtig ist.

    Magical dream time!
  • Also im Grunde funktioniert das genau so wie TCP:

    Quellcode

    1. HOW TO SEND MESSAGES:
    2. sendmessage(sockid, "ip.to.send.to", portosendto, [bufferid]);
    Die Messages musst du dann genauso abfangen/abfragen wie in TCP, also mit receivemessage(socket).

    Kenn mich da nicht aus, nie benutzt, aber an deiner Stelle würde ich TCP benutzen, UPD Messages kommen nicht zu 100 % an und der Geschwindigkeitsvorteil macht der GM sowieso wieder zunichte :P
  • Ja, aber wie gesagt:
    Der Server ist nicht mit dem GM gemacht und sended nur UDP.
    Da kann ich halt nichts machen. Ich werde mal recievemessage versuchen.
    Danke erstmal.

    Hm, der liefert immer nur -1 zurück.
    Ich hänge mal meine Datei an. Habe ich etwas falsch gemacht?
    Dateien
    • TUIO.rar

      (7,77 kB, 215 mal heruntergeladen, zuletzt: )

    Magical dream time!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Megamag ()

  • Das geht folgendermaßen:

    GML-Quellcode

    1. // Step Event:
    2. while (1) {
    3. size = receivemessage(UPD);
    4. // Fragt nur ab, ob man eine Nachricht bekommen hat,
    5. // hält aber das Programm nicht an. Gibt die Größe
    6. // des angekommenen Pakets in Bytes an.
    7. if (size==0) {show_message("Client beendet"); /*game_end();*/}
    8. if (size<0) {break;} // keine Nachricht erhalten, raus aus der Schleife
    9. Text = readstring();
    10. }