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

Réseau C Discussion :

[Linux] Programmation serveur


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut [Linux] Programmation serveur
    Bonjour,

    Afin de m'entrainer à la programmation réseau en C, je voulais réaliser un petit programme serveur sous Linux.

    Je cherche de la documentation pour obtenir un résultat similaire à ce que l'on peut trouver habituellement avec les programmes serveurs (je vais prendre l'exemple de MySQL qui représente bien ce que je veux faire).

    Pour démarrer/arrêter le démon MySQL, je fais (en root) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /etc/init.d/mysql start|stop
    pour effectuer une commande (depuis n'importe quel utilisateur) :
    Ce qui signifie que j'ai au moins trois exécutables :
    • Un premier qui se lance au démarrage, le démon
    • Un second qui contrôle le démon (/etc/init.d/mysql)
    • Un dernier qui l'interroge (/usr/bin/mysql)


    J'ai vu comment fonctionnent les threads, la mémoire partagée, les sémaphores et les files de messages. Mon problème est que je ne sais pas trop comment ordonner tout ça

    J'espère avoir été clair... En tous cas je n'ai rien trouvé sur la FAQ et, pour être honnête, je ne sais pas trop quoi chercher...

    edit: quand à aller voir le code de MySQL pour comprendre... non, ça ne me tente pas

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par manudwarf Voir le message
    Ce qui signifie que j'ai au moins trois exécutables :
    • Un premier qui se lance au démarrage, le démon
    • Un second qui contrôle le démon (/etc/init.d/mysql)
    • Un dernier qui l'interroge (/usr/bin/mysql)
    • Le 1er programme est en fait le démon serveur (qui dans ton exemple s'appelle mysqld). Il y a plein d'exemples sur le net pour écrire un démon qui en plus soit serveur au sens réseau du terme.
    • Le 2eme programme est un shell script (qui dans ton exemple s'appelle /etc/init.d/mysqld). Regarde comment sont faits les autres scripts dans le répertoire /etc/init.d et adapte le tien, cela ne devrait pas être trop dur.
    • Le 3eme programme est un programme utilisateur qui se comporte en client vis-a-vis du démon serveur TCP/IP. Ce programme est un programme console ou graphique (type Hello World mais un peu plus compliqué) qui se connecte au démon serveur. Les fonctionnalités offertes par ton programme client sont directement dépendantes de ce que sait/veut faire ton démon serveur et le mode de connexion à ce démon serveur est directement dépendant du/des types de connexions acceptées par ton démon serveur.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    • Le 1er programme est en le démon serveur (qui dans ton exemple s'appelle mysqld). Il y a plein d'exemples sur le net pour écrire un démon qui en plus soit serveur au sens réseau du terme.
    • Le 2eme programme est un shell script (qui dans ton exemple s'appelle /etc/init.d/mysqld). Regarde comment sont faits les autres scripts dans le répertoire /etc/init.d et adapte le tien, cela ne devrait pas être trop dur.
    Ok, je vais voir ça.

    • Le 3eme programme est un programme utilisateur qui se comporte en client vis-a-vis du démon serveur TCP/IP. Ce programme est un programme console ou graphique (type Hello World mais un peu plus compliqué) qui se connecte au démon serveur. Les fonctionnalités offertes par ton programme client sont directement dépendantes de ce que sait/veut faire ton démon serveur et le mode de connexion à ce démon serveur est directement dépendant du/des types de connexions acceptées par ton démon serveur.
    Donc pas d'IPC ? Fais suer je me suis grillé plus d'une neurone pour y arriver...

    Merci !

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par manudwarf Voir le message
    Donc pas d'IPC ? Fais suer je me suis grillé plus d'une neurone pour y arriver...
    IPC veut dire Inter Process Communication. C'est un nom générique qui regroupe toutes les technologies/moyens qui permettent à 2 (ou plus) processus différents de communiquer entres eux en s'affranchissant de la problématique des accès concurrents/simultanés.

    Dans ces moyens, on trouve :
    • socket
    • sémaphore
    • signaux
    • mémoire partagée
    • evenements
    • pipe
    • ...

    Si on reprend ton exemple de MySQL, les moyens IPC mis à disposition par le serveur mysqld pour communiquer avec un ou plusieurs clients sont :
    • socket (c'est l'utilité du port TCP 3306)
    • pipe
    • peut être d'autres encore (je ne connais pas suffisemment les internals de MySQL)

    Il faut bien comprendre que c'est le serveur qui dit le ou les moyens qu'il peut utiliser et c'est au client de s'adapter et d'utiliser ceux mis à disposition
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    IPC veut dire Inter Process Communication. C'est un nom générique qui regroupe toutes les technologies/moyens qui permettent à 2 (ou plus) processus différents de communiquer entres eux en s'affranchissant de la problématique des accès concurrents/simultanés.
    Même pas forcé : l'utilisation de la mémoire partagée, par exemple, ne garantit pas d'être à l'abri d'accès concurrents. En général, on distingue les I.P.C. en général et les « I.P.C. de SysV » Unix qui englobent mémoire partagée, files de messages et sémaphores, avec une API propre. Les sockets, eux, sont résolument un mécanisme d'IPC, mais c'était la réponse de BSD.

    En outre, quand on montre les IPC au sens large, on énumère les procédés qui permettent de faire passer une info d'un processus à l'autre, mais ce n'est pas pour cela que c'est à ça qu'ils servent. L'exemple le plus courant est les signaux Unix : régulièrement, il y a des gens qui essayent de faire du message passing avec. J'avais même un prof, pour qui j'ai beaucoup d'estime par ailleurs, qui comparait cela aux messages de la C.API de Windows, qui balançait ses événements sous forme de LONG. « Vous avez vu ? Sous Unix, on a un seul octet pour envoyer des messages, alors que sous Windows on en a quatre. Ça laisse plus de possibilité ». Je bouillais sur ma chaise. :-)

Discussions similaires

  1. Votre langage de programmation serveur préféré pour le Web ?
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 82
    Dernier message: 18/02/2009, 17h50
  2. [c/linux] Programmation sur carte à puce
    Par MonsieurAk dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 03/10/2006, 10h52
  3. Réponses: 3
    Dernier message: 02/07/2006, 13h17
  4. [RESEAU] Authentification client linux sur serveur windows
    Par rvfranck dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 19/06/2006, 18h57
  5. Authentification client linux sur serveur windows
    Par rvfranck dans le forum Réseau
    Réponses: 4
    Dernier message: 19/06/2006, 07h27

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