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

Linux Discussion :

C++ sockets lib unix


Sujet :

Linux

  1. #1
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut C++ sockets lib unix
    Bonsoir,

    J'ai effectué quelques recherches sur google sur les sujets étant question de lib C++ sur les socket sous unix mais je n'ai pas trouvé grand chose.. J'ai cru lire que boost contenait des sockets mais je n'ai rien trouvé, apparemment ce serait en développement et serait disponible dans le paquet libboost-sandbox. Je vous demande donc si vous connaissez une quelconques librairie C++ pour les sockets sous UNIX (de préfèrence une "bonne" librairie ^^, du moins selon vous). Il existes bien déjà des classes sous UNIX pour les sockets mais celles-ci sont en C.. Et j'aimerais que ce soit uniquement du C++ dans la mesure du possible. Merci d'avance pour vos conseils et suggestions.

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 013
    Points
    11 013
    Par défaut
    Au taf', j'utilise ACE qui comne lib réseau et MT. Cette lib existe depuis un bon moment, elle est robuste et au coeur d'un ORB temps réel -> TAO. Elle s'avère être parfaitement portable.

    boost.ASIO est récente (je ne sais plus si elle a déjà été intégrée ou non). Le C++ est plus "moderne", mais elle manque de fonctionalités par rapport à ACE je crois.

    Dernièrement, POCO a été évoquée. Je n'ai jamais testé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Luc Hermitte
    boost.ASIO est récente (je ne sais plus si elle a déjà été intégrée ou non).
    Elle a été acceptée pour la 1.34, mais cette dernière n'a pas envie de sortir...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    asio est prévu pour la 1.35, pas la 1.34.
    Et si la 1.34 sort pas c'est parce qu'il faut que toutes les bibliothèques sur le CVS passent tous les tests, ce qui n'est pas le cas.
    Ils feraient mieux de rendre plus indépendants les différents modules si vous voulez mon avis.

    asio a été proposé comme addition à C++ sous forme de bibliothèque réseau, je ne sais cependant pas quel en est son statut ici. Je trouve pas ça très pertinent, asio c'est pas que du réseau, c'est de l'I/O bas niveau et asynchrone, et ça devrait être ajouté au standard sous cette forme.

    ACE est bien plus lourd, contient tout un tas de choses inutiles pour faire du réseau, n'est pas dans un joli C++, et en plus est moins performant pour l'asynchrone.
    De plus ACE ne fournit l'asynchrone que si la plateforme le supporte, et uniquement sous la forme que fournit la plateforme (reactor ou proactor).
    Avec asio, t'as du proactor à tous les coups...

    Bref, asio c'est plus simple, plus léger, plus générique et plus performant.
    Boost ftw

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 013
    Points
    11 013
    Par défaut
    Citation Envoyé par loufoque
    De plus ACE ne fournit l'asynchrone que si la plateforme le supporte, et uniquement sous la forme que fournit la plateforme (reactor ou proactor).
    Avec asio, t'as du proactor à tous les coups...
    A ce sujet, j'étais tombé sur un article qui expliquait que le choix reactor/proactor de ACE était induit par les "primitives" sous-jacente de l'API systême à laquelle était délégué le boulot.
    N'y a-t-il pas un risque de chute de perfs à utiliser une solution qui n'est pas la plus efficace sur un OS ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    je me permet de me faire un peu de pub (mais ça répond quand même ) : Claw a quelques classes pour manipuler les sockets.

    Je suis mal placé pour juger si c'est une "bonne" bibliothèque, mais je dirait que

    +: les classes héritent des classes de flux standards, donc leur utilisation est très naturelle
    -: il y a très peu de contrôle sur le type du protocole.

    Ceci dit, si ça peut me permettre d'avoir quelques retours, ça serait génial.

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    D'après cet article implémenter le proactor avec du reactor ne produit aucune dégradation de performance.

    Néanmoins le changement de responsabilité fait que le framework doit disposer de buffers mémoire à l'avance, contrairement au pattern reactor où ceux-ci ne sont nécessaires qu'au moment de la lecture.
    Cela est indiqué dans la documentation d'asio.
    Boost ftw

  8. #8
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    Hm, d'après vos conseils je dois me tourner vers ASIO c'est ça ? Pour quand la sortie de boost contenant ASIO est-elle prévue ? Histoire d'installer la librairie directement avec le paquet ^^

  9. #9
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    Bonsoir,


    J'ai donc décidé de téléchargé puis d'installer la dernière version stable d'ASIO à savoir la version 0.2.0.
    J'applique donc les manipulations suivantes:
    #je n'ai pas téléchargé l'archive dans mon home mais l'ai ouvert directement donc l'archive se trouve dans /tmp mais est ouverte par le biais du gestionnaire d'archive, j'extrait donc son contenu dans mon home
    #le dossier asio-0.2.0 est alors créé


    cd asio-0.2.0 #j'entre dans le dossier
    ./configure --with-boost=/usr/include/boost #j'utilise l'option --with-boost car boost est déjà installé
    make #je compile
    make check #je vérifie que tout s'est parfaitement déroulé
    voila, j'ai suivis tout ce qui était dit dans le fichier INSTALL seulement voila, il n'y a rien dans /usr/include/boost ..
    J'ai pourtant suivis les instructions.. Si vous pouviez m'aider à résoudre ce problème s'il vous plaît. Merci d'avance ^^

    PS: j'ai aussi testé avec sudo vu que boost se situe dans /usr/* mais rien n'y fait

  10. #10
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    Problème résolu, j'ai finalement téléchargé la dernière version d'ASIO. Il ne me restait donc qu'à copier le dossier asio et le fichier asio.hpp là où se trouve boost et c'était finit. Il me manquait tout de même quelques headers, j'ai donc installé tous les paquets libboost-*, comme ça je n'aurais plus aucun problème. Merci pour vos conseil =]

  11. #11
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu pourrais aussi prendre la dernière version CVS, où l'API a été modifiée pour coïncider avec celle de la proposition pour le standard.
    Boost ftw

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. server de sockets unix et tcp/ip en mm tps?
    Par iznogoud36 dans le forum Linux
    Réponses: 7
    Dernier message: 02/01/2007, 08h58
  2. [SOCKET] Client UDP sur système Unix
    Par be_tnt dans le forum Développement
    Réponses: 1
    Dernier message: 14/04/2006, 21h31
  3. quel port (socket unix)
    Par sympho dans le forum Réseau
    Réponses: 7
    Dernier message: 18/10/2005, 09h32
  4. SOCKET + UNIX
    Par yokiyok dans le forum Développement
    Réponses: 3
    Dernier message: 30/06/2004, 13h47
  5. write() dans une socket.. unix
    Par slack dans le forum Réseau
    Réponses: 5
    Dernier message: 18/12/2002, 20h42

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