Journal classe pour gerer les socket en C/C++

Posté par  .
Étiquettes : aucune
0
5
mar.
2004
Bonjour journal,

dans le cadre d'un projet scolaire, je recherche une classe qui s'occupe de gerer les sockets.

Cette classe devrai respecter une condition tres importante : etre compatible Windows ET Linux.

J'en ai deja trouver mais jamais a mon gout, il faudrait quelle soit non bloquante et assez simple dans la mesure du possible.

Cette classe me permettrai de faire facilement un serveur et un client et de gerer leur communication.

Oui, je sais j'en demande beaucoup, mais bon...

Merci
PS : pour mon projet, j'ai le droit de recuperer des classe deja faites, je ne triche pas :-)
  • # Re: classe pour gerer les socket en C/C++

    Posté par  (Mastodon) . Évalué à 2.

    Je te conseil d'utiliser la sdlnet, elle est vraiment très pratique et multiplatforme.
  • # Re: classe pour gerer les socket en C/C++

    Posté par  . Évalué à 1.

    Sinon tu peux ecrire ta librairie. Ca devrait pas etre très compliqué, sous Linux. Pour Windows, je sais pas: je n'ai jamais dévellopé pour Windows.

    P.S: On ne parle pas de classe en C
    • [^] # Re: classe pour gerer les socket en C/C++

      Posté par  . Évalué à 1.

      Oui, en faites le titre est un peu ambigue mais la classe serait devellopée en C++ (forcement) et elle serait utilisée dans un prog codé en C ou C++

      la je pense que c'est correct ?

      Sinon, pour la develloper moi même, c'est pas gagné, j'ai des compétence en prog assez limités.
      Au mieux, je pourrais coller plusieurs bout de code qui m'interessent et qui proviendrai de differentes classes.

      Pour ne rien arranger, le temps m'est compté et j'ai pas mal de boulot autre que ce projet
      c'est dur la vie d'etudiant... :-)
  • # Re: classe pour gerer les socket en C/C++

    Posté par  . Évalué à 3.

    Je connais ACE, qui permet de faire absolument tout ce que tu veux sous nux et win (et d'autres), justement.
    • [^] # Re: classe pour gerer les socket en C/C++

      Posté par  . Évalué à 1.

    • [^] # Re: classe pour gerer les socket en C/C++

      Posté par  . Évalué à 2.

      J'utilise ACE quotidiennement dans mon boulot et c'est un vrai bonheur, mes devs fonctionne à partir du même source sur Linux, Tru64, Aix, Windows... Il n'y a guère que Solaris qui me pose problème mais la c'est lié au médiocre Forte C++.

      Concernant ACE c'est un peu limitant de l'assimiler à une librairie de Socket. C'est plutot un framework objet qui permet grâce à l'utilisation d'abstractions et de design patterns de réaliser des développement d'une très grande élégance. Il permet de gérer au travers d'une interface commune à plusieurs OS les problématiques de communication réseaux, de multithreading, de communication IPC et plein d'autres choses que je n'ai pas encore utilisé.

      Pour résumer ACE c'est un framework qui répond à la probèmatique de ce journal mais qui demande un gros effort d'apprentissage pour parvenir à le maitriser. Depuis que je l'utilise je me demande bien comment j'ai pu programmer sans par le passé.
  • # Re: classe pour gerer les socket en C/C++

    Posté par  . Évalué à 2.

    C'est le moment ou jamais de te lancer dans l'utilisation de boost !! Elle a implementée d'une facon assez originale les sockets. Pour plus d'infos:
    http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost-sandbox/boost-(...)

    Site principal
    http://boost.org/(...)

    ML:
    http://lists.boost.org/(...)
  • # Re: classe pour gerer les socket en C/C++

    Posté par  . Évalué à 1.

    Pour la gestion des sockets (TCP/IP et UDP/IP) j'ai fait ma propre classe C++. Cela marche sous linux et windows avec cygwin.
    Comme c'est assez simple (niveau d'abstraction assez bas) cela peut s'adapter rapidement au C ou à winsock je pense. (c'est une occasion d'apprendre).

    Il s'agit du module zcnet (.h/.cc) qu'on peut trouver dans les archives à l'url suivante:
    http://dev.oridani.com/viewdoc.php?threp=dev/zc&view=download(...)
  • # Re: classe pour gerer les socket en C/C++

    Posté par  . Évalué à 1.

    La CommonC++ : http://www.gnu.org/software/commoncpp/(...)
    doc en ligne (doxygen + quelques exemples) : http://www.gnu.org/software/commoncpp/docs/refman/html/index.html(...)
    C'est disponible dans toutes les bonnes distrib, c'est portable Linux/Windows
    Elle permet de gérer très facilement les socket (TCP ou UDP), les threads, et encore plein d'autres choses dont je me suis pas encore servi.
    Je m'en suis servi pour faire un soft de transfert de fichier client/serveur en utilisant UDP, et franchement ca marche tout seul!
  • # Re: classe pour gerer les socket en C/C++

    Posté par  . Évalué à 2.

    La portabilité des socketes est assez facile.
    La seule difference est lobligation de faire un WSAStartup() au depart sous win et fermer une socket sous win cest closesocket au lieu de close.
    Vive les #ifdef.
    Sinon avec send() recv() socket() bind() et la macro FD_ZERO FD_ISSET (permet de faire du non bloquant avec du bloquant) tu est portable.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.