Jump to content
Unity Insider Forum

Verbindung Server zum Handy


Recommended Posts

Hey,

ich bin gerade dabei ein rundebasiertes Spiel zu programmieren. Es soll eine Handyapp werden bei der jeder Spieler eine festgelegte Zeit hat seinen Zug zu beenden. Der Spielstand wird zu einem Server geschickt, der den Spielstand in eine Datenbank speichert. In der Datenbank sind auch alle anderen Spieler hinterlegt.

Jetzt zu meiner Frage :)

Wie kann der Server eine Verbindung zu einem Client herstellen? Von Client zu Server ist alles klar, da gibts ne IP und los gehts aber andersherum? Wie funktioniert das? Über die Handynummer oder die Mac-Adresse? xDD

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Minuten schrieb Killererbse:

Danke für die Antwort die bei mir tausende neue Fragen aufwirft. :)

Wie funktionieren denn die Notifications bei Whatsapp und co? Sind diese Apps ständig mit dem Server verbunden? Kann man Apps im Hintergrund weiter laufen lassen?

Ja genau. Die Apps fragen ständig (vielleicht alle paar Sekunden) den Server nach dem Status (Gibt es eine neue Nachricht etc.). Deswegen ist es auch zwingend notwendig dass man Apps im Hintergrund weiter laufen lässt und so machen es die Apps ja auch auf Android und iOS

Link zu diesem Kommentar
Auf anderen Seiten teilen

Heutzutage gibt's da ein paar Technologien, die das einigermaßen verstecken können. Die simpelste Variante ist ein Server-Backend, das einkommende Anfragen einfach solange nicht beantwortet, bis es was zum antworten gibt, oder eben Connection Timeout ist, woraufhin der Client sofort die nächste Anfrage startet. Aber auch das ist schon nocht mehr state of the art.

Hier gibt's mehr Infos: https://en.wikipedia.org/wiki/Push_technology

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 weeks later...

Du machst einen TCP Server für Linux oder Windows. Verbindest den Client zum Server packst die IP usw. In eine Array zsm mit weiteren Clients. Ausserdem kannst du vom Server erwas zurück senden, weil du eine Client ID hast.

 

Bspw.beim 

For(int i=0; i<100; i++){
       If(Clients[i] == null){
              Clients[i].IP = Client.RemoteAddress.toString().
              Clients[i].ID = i;
        }
}

Ich habe es jetzt nicht weiter getestet, aber ähnlich habe ich das auch. Ist auch nicht zum Copy N.Pasten, sondern als Anregungen gedacht. Bin gerade nur mit dem Tablet unterwegs.

Gruß,

Zepe~

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 weeks later...
Am 18.7.2018 um 22:42 schrieb Killererbse:

Wie kann der Server eine Verbindung zu einem Client herstellen? Von Client zu Server ist alles klar, da gibts ne IP und los gehts aber andersherum? Wie funktioniert das? Über die Handynummer oder die Mac-Adresse? xDD

 

Wenn es tatsächlich um Client-Server Modell geht, dann geht das mit den Nummern nicht. Geht es aber darum, dass man das Spiel startet (in Sinne von App öffnen) und man lädt Daten aus dem Datenbank runter (also keine Sockets (realtime Datenaustausch) werden aufgebaut), dann müsse das gehen (Man braucht natürlich immer noch einen Server ^^)

Am 19.7.2018 um 09:30 schrieb Helishcoffe:
Am 19.7.2018 um 09:17 schrieb Killererbse:

Danke für die Antwort die bei mir tausende neue Fragen aufwirft. :)

Wie funktionieren denn die Notifications bei Whatsapp und co? Sind diese Apps ständig mit dem Server verbunden? Kann man Apps im Hintergrund weiter laufen lassen?

Ja genau. Die Apps fragen ständig (vielleicht alle paar Sekunden) den Server nach dem Status (Gibt es eine neue Nachricht etc.). Deswegen ist es auch zwingend notwendig dass man Apps im Hintergrund weiter laufen lässt und so machen es die Apps ja auch auf Android und iOS

Das ist ne gute Theorie, aber so weit ich weiß läuft das nicht so. So wie ich das damals entnommen habe läuft das bei Android Systemen zu mindest anders. Die Apps müssen auch NICHT im Hintergrund laufen. Ich beziehe mich hier auf Android Apps die mit GCM (Google Cloud Message - z.B. für Push Notification) funktionieren.

Im Hintergrund läuft ein Prozess ich glaube sogar von Google Play der immer auf eine Verbindung wartet bis Google Server sagen "wir verbinden uns jetzt mit dir". Das heißt du verbindest dich nicht (sendest aber einmalig, dass du online gegangen bist). Kannst quasi wie ein Server auf dein Handy sehen. Jedes mal also, wenn die Verbindung bricht, versuchen Google Server, wenn sie es benötigen, eine Verbindung mit dir aufzubauen.

So. Sobald einer eine Push Nachricht sendet geht es erst zu Google Servern und von dort aus wird an dich weiter geleitet (und ggf. Verbindung aufgebaut). Jetzt sucht dein Handy nach bestimmten Subscription sowas wie com.whatsapp.event.messagenotifcation oder sowas. Hat man das.. wird die Push-Nachricht angezeigt.
Allerdings weiß ich nicht, ob google erst mal sagt "hey, hab ne push nachricht an dich für event com.whatsapp.event.messagenotifcation" und du sagst "hey hab das sogar als event bei einer app subscriped" und kriegst dann erst nachträglich die Nachricht geschickt oder dass du sofort die Nachricht bekommst und dein handy halt guckt, ob du überhaupt anzeigen kannst. Kann auch sein, dass google irgendwie auch intern registriert, dass du es empfangen darfst.

Ich hab nen Iphone5 (naja mittlerweile seit paar Wochen meine Mutter hat das jetzt) und Samsung Edge S6. Beide hatten die gleichen Apps und account. Als ich Iphone 5 nach vieeeelen Monaten gestartet habe.. habe ich all die Push Notifications nachträglich bekommen, die ich bereits schon mit mit meine Samsung bekommen habe. Ich glaube daher, dass man eher auf den google servern sich "registriert", dass man etwas empfangen möchte.

Hey aber nicht verwechseln mit den LOKALEN Notifcations. Das gibt es ja auch. Da braucht man kein Google Cloud Server.

Man kann daher eigentlich sowas selbst basteln, aber da müsste die App tatsächlich im Hintegrund laufen. Allerdings weiß ich zu mindest bei Unity, dass die Verbindung irgendwann abbricht, wenn es im Hintergrund ist. Vllt ist das mittlerweile anders.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...