IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Petit serveur "simple" en C


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut Petit serveur "simple" en C
    Bonjour,

    je suis actuellement en train de coder un "gros" projet de jeu en vb.net. Ce projet a été présenté dans le sous forum "projets" et je vous invite a le découvrir si vous le souhaitez ici :

    http://www.developpez.net/forums/d11...project-suivi/

    Bon, je viens pas ici pour en faire la pub, ce n'est pas le sujet mais pour ce qui va suivre je préfère montrer l'état de mes avancées.

    Dans le cadre de ce projet, je suis en train de concevoir un "mini-serveur" dont le principal et unique rôle sera de valider l'authentification d'un utilisateur de manière sécurisé entre le client et la base de données MySQL utilisée pour le site.

    J'ai déjà développé la version VB.net de ce programme qui est fonctionnelle. Malgré tout, l'hébergeur de mon serveur physique (je possède donc pour ce projet un serveur dédié...) me demande une version de mon application en C avec compilateur GCC de préférence.

    Le problème, mes dernières lignes de code en C datent de mes études soit, 15 années dans le passé et je suis incapable de pouvoir coder proprement en C. C'est pourquoi je viens ici aujourd'hui pour demander de l'aide.

    Mon Application serveur fait actuellement 200 lignes et est soutenu par une petite classe de gestion des clients réseau de 75 lignes.
    Le tout s'appuie sur une DLL vb.net (de ma conception) pour ma gestion réseau 'personnelle' et fait au total 1000 lignes.

    Effectivement, le plus gros du travail serait autour de cette DLL mais peut être est il possible de la réutiliser moyennant une recompilation adéquate dans le projet C ?

    Je fournis bien sur l'intégralité du code source, je ne parle pas de rémunération car étant professionnel dans le développement je connais les coûts d'un développeur sur un projet et ce sera pour moi hors de prix.

    Donc voila mon problème, si une personne intéressée ou charitable pouvait au mieux m'aider, au pire me donner des pistes, ce serait vraiment sympa.

    Cordialement,
    Nico.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Dommage d'avoir tout développer en VB pour devoir refaire en C.... Pas moyen de s'arranger avec ton hébergeur ?

    Plusieurs questions en vrac :
    - ta base de données MySQL est sur un site web / machine distante ?
    - ou est-elle sur la machine du maitre du donjon (qui est le maitre du réseau à 5 ?)?
    - as-tu besoin de portabilité de ton mini-serveur ?
    - as-tu besoin forcément d'un programme en C ? Un programme en C++ avec Qt serait plus facilement portable et plus simple avec toutes les fonctions existantes pour gérer des connexions à une base de données.

    Pour ce qui est de l'utilisation de la bibliothèque en VB, je n'ai pas la moindre idée de si tu peux l'utiliser ou non. Le plus gros du travail sera là dedans s'il faut tout recopier.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Hello,

    Merci de cette réponse qui apporte son lot de questions pertinentes !

    Apparemment mon hébergeur semble préférer le C au VB et je ne l'en blâme pas (même si je suis un fervent supporter du langage VB, je suis assez lucide pour savoir qu'un couple {C/C++}/{Unix-Linux} sera tjrs plus solide qu'un couple VB/Windows....

    - ta base de données MySQL est sur un site web / machine distante ?
    Ma BDD est donc sur une machine distante et sera la BDD du site internet (je vais utiliser Joomla comme base), le but est d'installer une petite application serveur en local sur la machine hébergeant le site afin de faire des accès sql en mode "localhost".

    - ou est-elle sur la machine du maitre du donjon (qui est le maitre du réseau à 5 ?)?
    Le maître du donjon n'aura pas de BDD local. D'un point de vue sécurité, je trouverai ca trop dangereux.

    - as-tu besoin de portabilité de ton mini-serveur ?
    Mon mini-serveur n'a qu'un but, faire le relai entre la BDD en local et les status des clients (authentification/connection/déconnection) il ne gère meme pas un canal chat général par exemple. A partir du moment où il fonctionne sur la machine qui héberge la BDD MySQL je suis heureux.

    - as-tu besoin forcément d'un programme en C ? Un programme en C++ avec Qt serait plus facilement portable et plus simple avec toutes les fonctions existantes pour gérer des connexions à une base de données.
    Oui j'y ai pensé, je dois redemander a mon hébergeur mais je pense que ce serait faisable. De plus, le C++ pourrait avoir accès a ma DLL en mode COM alors que le C je pense que c'est râpé.
    De plus dans ce cas, je pourrai modifier mon code pour utiliser cette DLL réseau :
    J'avais mon serveur en mode windows.forms, je viens de le passer avec succès en mode console ce qui sera je pense plus facile a traduire...

    Cordialement,
    Nico.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    OK, ça devient plus clair ^^

    Ton mini-serveur.....est un serveur tout court ! C'est le serveur d'authentification pour pouvoir jouer. Comme quand je joue à GuildWars ou StarcraftII. C'est donc lui que les clients (qui soient maîtres de donjon ou héros assaillants) vont contacter pour pouvoir entrer dans le jeu (et je présume qu'ils choisissent une fois connecté quel type de personnage ils souhaitent jouer).

    Tes arguments sur l'utilisation des bibliothèques me font vraiment dire "essaye d'utiliser C++ !", le portage sera beaucoup plus simple puisque tu n'aurais "que 275 lignes" à porter.

    Pour ce qui est par contre d'établir une connexion entre le client et la machine, je ne pourrais pas beaucoup t'aider. J'ai déjà fait une application de jeu multijoueur en C mais c'était un réseau local. On avait simplement utilisé les pthreads si j'ai bonne mémoire. Je ne sais pas comment tu peux les utiliser dans le cas d'un serveur distant.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    dans le cas d'un serveur distant, il y a aussi du thread pour les clients, et les sockets pour la connexion.
    Il existe des bibliothèques pour les sockets, c'est pas hyper sorcier à utiliser .

    Bonne chance dans ton projet
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Merci des réponses,

    Je suis en train de modifier mon code pour utiliser la librairie NadingNetwork qui gère le client-serveur. Cette bibliothèque est plus sympa a porter sur d'autres systèmes :

    The primary focus of the library is to provide an easy to use yet powerful .NET Framework based lib for use in Visual Basic, c#, and managed C++ by hobbyists as well as pro's
    Je pense avoir fini cette modification en fin d’après midi et le code "complet" de mon serveur n'est plus que de 200 lignes en VB.net...

    Ton mini-serveur.....est un serveur tout court ! C'est le serveur d'authentification pour pouvoir jouer. Comme quand je joue à GuildWars ou StarcraftII.
    Oui je parlais de mini-serveur dans le sens ou il est petit en terme de lignes et de fonctionnalités (le coté client-serveur du jeu par lui même est une autre paire de manches !! )

    A+
    Nico

  7. #7
    Membre éprouvé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Points : 1 073
    Points
    1 073
    Par défaut
    J'ai déjà développé la version VB.net de ce programme qui est fonctionnelle. Malgré tout, l'hébergeur de mon serveur physique (je possède donc pour ce projet un serveur dédié...) me demande une version de mon application en C avec compilateur GCC de préférence.
    Qu'est-ce qu'un hébergeur en à a faire que tu écrive ton code en telle ou telle technologie?

    Le rôle de ton hébergeur doit se limiter à la mise à disposition d'un moyen technique, ce n'est pas lui qui gère ton projet à ce que je sache.

    La seule chose qui le fait intervenir est la mise à disposition de runtimes.

    Mais apparement, tu compiles des fichiers executables. Un executable peut être fait en ce que tu veux, ça ne regarde pas l'hébergeur.

    La seule contrainte que peux poser l'hébergeur est un quota sur les ressources. Ces ressources sont CPU, RAM, HDD, Bande passante...
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Coucou,

    En théorie, je serai d'accord avec toi sauf si cet hébergeur ne peut me mettre a disposition d'un serveur Unix/Linux ce qui va provoquer quelques désagréments quand je vais vouloir lancer mon serveur en VB.net 2010 avec son framework 4.0...

    Je pense que c'est surtout dans cette optique simple qu'il m'a demandé ceci.

    Cordialement,

    Nico.

  9. #9
    Membre éprouvé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Points : 1 073
    Points
    1 073
    Par défaut
    Citation Envoyé par leghola Voir le message
    Coucou,

    En théorie, je serai d'accord avec toi sauf si cet hébergeur ne peut me mettre a disposition d'un serveur Unix/Linux ce qui va provoquer quelques désagréments quand je vais vouloir lancer mon serveur en VB.net 2010 avec son framework 4.0...

    Je pense que c'est surtout dans cette optique simple qu'il m'a demandé ceci.

    Cordialement,

    Nico.
    Tu peux fournir des executables Linux avec plein d'autres langage que le C.

    Effectivement, VB.net ça tourne moyen même si ya mono. Mais tu peux faire du Python, du C++, du Perl, du Java....

    Je ne vois pas pourquoi particulièrement du C, du point de vue de l'hébergeur.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Hello,

    Donc je viens de voir mon hébergeur (j'ai son contact MSN ce qui aide fortement dans la communication !) qui me signale qu'un programme en C++ ne pose aucun problème.

    Le serveur tourne sur CentOS avec ce compilateur :
    "gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC)"

    Pour info, ce nouvel hebergeur fait de chouettes packages et je vous invite a aller le voir si vous recherchez une solution correcte et vraiment accessible :
    http://barret.vanadiumgaming.com

    A+
    Nico

  11. #11
    Membre éprouvé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Points : 1 073
    Points
    1 073
    Par défaut
    Citation Envoyé par leghola Voir le message
    Hello,

    Donc je viens de voir mon hébergeur (j'ai son contact MSN ce qui aide fortement dans la communication !) qui me signale qu'un programme en C++ ne pose aucun problème.

    Le serveur tourne sur CentOS avec ce compilateur :
    "gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC)"

    Pour info, ce nouvel hebergeur fait de chouettes packages et je vous invite a aller le voir si vous recherchez une solution correcte et vraiment accessible :
    http://barret.vanadiumgaming.com

    A+
    Nico
    On ne compile pas sur un serveur normalement. On compile chez soi et on déploie sur le serveur.
    Mais bon, tu n'es pas en production, alors on s'en tape un petit peu pour le moment.
    Quel est ton mode de travail?
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Hello,

    Je m'y connais en VB et environnement Windows mais pas en C/C++ environnement Linux. Mais il serait logique effectivement qu'a partir du moment ou un programme est compilé et donc traduit en langage machine, le compilateur n'a plus grande importance.

    Je termine actuellement mon serveur en VB.net en mode console en épurant un maximum mon code et ensuite je pense le recoder via Code:Blocks, je ne sais pas, je m'aventure en contrées inconnues la.

    A+
    Nico

  13. #13
    Membre éprouvé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Points : 1 073
    Points
    1 073
    Par défaut
    Citation Envoyé par leghola Voir le message
    Hello,

    Je m'y connais en VB et environnement Windows mais pas en C/C++ environnement Linux. Mais il serait logique effectivement qu'a partir du moment ou un programme est compilé et donc traduit en langage machine, le compilateur n'a plus grande importance.

    Je termine actuellement mon serveur en VB.net en mode console en épurant un maximum mon code et ensuite je pense le recoder via Code:Blocks, je ne sais pas, je m'aventure en contrées inconnues la.

    A+
    Nico
    En terme d'architecture, c'est idem. Tu as des sources, tu génère un exécutable, la machine cible peut exécuter l’exécutable sans avoir les sources ni le compilateur, tant qu'elle a les librairies que tu appelle dynamiquement et que le binaire est au bon format.

    Effectivement, un mode console sans IHM c'est mieux pour un composant qui tournera sur un serveur.

    Essaie quand même de voir si il tourne sous Linux avec Mono quand tu l'auras finit en VB. Mono est un portage du runtime .Net sous Linux.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  14. #14
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Si tu as besoin d'un prototype relativement rapidement, pourquoi ne pas porter le gros de ton serveur p.ex. en python et coder uniquement les fonctions consommatrices en ressources (et uniquement si nécessaire) en C ou en C++?

    Sinon, la compatibilité de Mono avec le framework .Net 4.0 semble présenter un potentiel intéressant. Il est possible que la masse de code à adapter ne soit pas aussi importante que tu l'imagines. Certainement à essayer.

    Avec mes meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Coucou,

    Merci pour cette réponse sur Mono, j'ai donc demandé a mon hébergeur.
    Il a installé le Mono 2.8 qui prends en charge le Framework 4.0
    Après une journée de modification de codes et de tests, ca fonctionne !

    Merci encore,

    A+
    Nico

  16. #16
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Et ben voilà, tout est réglé et pas besoin de faire du C

    Tu feras signe quand ton jeu sera OK, je suis curieux de le tester

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Effectivement, plus besoin de C et ca m'arrange fortement !

    Et bien sur, je donnerai des nouvelles de mon projet, je suis actuellement en phase de préparation de l'aspect "Web" et vous pourrez bientôt suivre le projet sur un beau site (enfin vu mes talents de webdesigner peut etre pas ^^)

    A+ et merci encore de vos aides respectives !

    Nico

  18. #18
    Membre éprouvé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Points : 1 073
    Points
    1 073
    Par défaut
    De rien et bon courage.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

Discussions similaires

  1. Difference entre [Simple quote] & [Double quote]
    Par Invité dans le forum SQL
    Réponses: 3
    Dernier message: 24/07/2013, 12h24
  2. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo