Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interface client/serveur en C

    30 juillet 2017 à 17:15:17

    Bonjour,

    Je fais actuellement un jeux vidéo en C avec CSFML et LUA. Et en fait j'aimerais créer un programme serveur du jeu pour par exemple sauvegarder les meilleurs scores, discuter avec les autres joueurs en ligne... Bref, ce genre de chose.

    Le petit hic est que le serveur ne peut actuellement écouter qu'une machine à la fois, c'est à dire que si quelqu'un d'autre essaye de se connecter au programme serveur il ne peux pas.

    Outre cela, comment marche l'hébergement de ce programme? J'ai déjà fait un site web et il est déjà hébergé mais j'ai jamais tenté pour un programme "exécutable". Beaucoup de questions me brûlent les lèvres, l'hébergeur supportera-t-il le programme ou y a-t-il des hébergeurs " spéciaux" pour les trucs autre que des sites webs? Devrais-je récompiler si l'hébergeur marche sous linux? Est ce que la vitesse de réponse du programme sera satisfaisante? Comment faire pour "lancer" le programme chez l'hébergeur parce que j'imagine que si je le télécharge chez eux avec un logiciel FTP il devra être lancé pour pouvoir se mettre sur écoute et je ne sais pas comment ça marche.

    Ma dernière alternative sera, si personne ne peux m'aider, d'utiliser mon ordinateur pour héberger le programme et il devra rester allumé et connecté à internet 24h/24 7j/7. Merci d'avance de votre précieuse aide, je saurais m'en souvenir en vous incluant dans les "credits" quand le jeu sera terminé.

    • Partager sur Facebook
    • Partager sur Twitter

    Malice13

      30 juillet 2017 à 17:56:24

      Salut.

      RayleighSilvers a écrit:

      Le petit hic est que le serveur ne peut actuellement écouter qu'une machine à la fois, c'est à dire que si quelqu'un d'autre essaye de se connecter au programme serveur il ne peux pas.


      Regarde du côté de l'IO asynchrone. En C cross-platform il y a libuv par exemple.

      RayleighSilvers a écrit:

      Outre cela, comment marche l'hébergement de ce programme? J'ai déjà fait un site web et il est déjà hébergé mais j'ai jamais tenté pour un programme "exécutable". Beaucoup de questions me brûlent les lèvres, l'hébergeur supportera-t-il le programme ou y a-t-il des hébergeurs " spéciaux" pour les trucs autre que des sites webs(1)? Devrais-je récompiler si l'hébergeur marche sous linux(2)? Est ce que la vitesse de réponse du programme sera satisfaisante(3)? Comment faire pour "lancer" le programme chez l'hébergeur parce que j'imagine que si je le télécharge chez eux avec un logiciel FTP il devra être lancé pour pouvoir se mettre sur écoute et je ne sais pas comment ça marche(4).


      1. En général il te faudra un serveur dédié pour ça, i.e. un serveur sur lequel l'hébergeur te donne tout le contrôle et sur lequel tu mets ce que tu veux.

      2. Oui.

      3. Ça dépendra de la qualité du processeur et de la bande passante de ton serveur, donc en fonction du coût de l'offre. Ça dépendra aussi et surtout de la qualité de ton programme. Un programme mal architecturé avec des perfs minables aura quand même des perfs minables sur un bon serveur.

      4. Si tu pars sur un serveur dédié tu auras un accès SSH.

      -
      Edité par Praetonus 30 juillet 2017 à 17:56:51

      • Partager sur Facebook
      • Partager sur Twitter
      Pony : Un langage à acteurs sûr et performant
        30 juillet 2017 à 18:56:21

        Je ne connais pas l'I/O asynchrone, ça a quelque chose à voir avec les threads? Parce que je penche plutôt pour cette solution.
        • Partager sur Facebook
        • Partager sur Twitter

        Malice13

          30 juillet 2017 à 19:12:08

          Ça repose souvent sur un pool de threads pour booster les perfs, mais ça n'est qu'un détail d'implémentation.
          • Partager sur Facebook
          • Partager sur Twitter
          Pony : Un langage à acteurs sûr et performant
            1 août 2017 à 10:33:12

            Salut, j'ai trouvé une solution en utilisant la fonction select qui attend un changement d'état des descripteurs contenus dans différents ensembles, il permet en outre de savoir si on vient de recevoir ou pas de données sur le socket X et donc les fonctions comme recv() ne sont plus bloquantes puisqu'on les appelle que quand on est sûr d'avoir reçu quelque chose. La solution est portable et facile à comprendre. Je met le lien ici pour ceux qui veulent apprendre: http://broux.developpez.com/articles/c/sockets/#L2-3 Il y a aussi du code pour créer un simple serveur de tchat multi-client. J'ai d'abord fait mumuse avec en tournant le code de haut en bas et en bidouillant pour être sûr de bien comprendre. La prochaine étape sera de changer la méthode du programme pour aller chercher les meilleurs scores et autres qui étaient avant dans des fichiers et de faire en sorte que le jeu communique avec un programme distant pour chercher ces données là. Ca a l'air facile mais c'est une masse de travail énorme puisque toutes les méthodes de récupération de données changent. Dernière question, comme tu l'as dit, il faut un serveur dédié pour héberger ce genre de chose. Or j'ai fait mes petites recherches et ce genre de serveur est pour les grandes entreprises qui louent des baies entières de serveurs, la taille minimale serait d'environ 250Go, et ça coûte la peau des fesses, or moi je n'ai besoin que d'un tout petit hébergeur car mon programme et la totalité de données qui y seront stockés ne dépasseront même pas les 5mo, voire moins. Merci de tes réponses.
            • Partager sur Facebook
            • Partager sur Twitter

            Malice13

            Anonyme
              6 août 2017 à 17:18:23

              Salut,

              Regarde du côté des serveurs dédiés VPS pour seulement quelques euros/mois, par exemple ici.

              L'hébergeur s'arrange pour avoir plusieurs serveurs virtuels sur une seule machine, ça ne change absolument au niveau droits rien puisqu'ils font en sorte que les gens hébergés sur une même machine n'aient pas accès aux autres serveurs virtuels, le serveur est partitionné, d'où le prix plus faible. En revanche les performances (RAM, CPU, disque dur, ...) seront plus faibles que si tu avais ta propre machine.

              À toi de voir ce qui te convient le mieux, notamment, dans ton cas, au niveau du CPU puisque stockage et RAM tu as l'air d'être peu gourmand. Mais si c'est juste pour discuter et stocker quelques données ça devrait aller (tant qu'il n'y a pas trop de monde).

              -
              Edité par Anonyme 6 août 2017 à 17:18:53

              • Partager sur Facebook
              • Partager sur Twitter

              Interface client/serveur en C

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown