Forum Programmation.c++ Quelle librairie pour du réseau?

Posté par . Licence CC by-sa
Tags : aucun
0
10
déc.
2013

Bonjour,

j'ai besoin d'une librairie pour que des ordinateurs puissent communiquer entre eux. Je connais déjà les modules QtNetwork et Network de Qt et SFML respectivement et après un peu de recherche, je suis tombé sur Boost.Asio.
Je connais déjà les deux premier, cependant j'ai jamais vraiment regardé, ni utilisé Boost.

Le but du programme (ou plutôt sous-programme) est de pouvoir créer un réseau privé entres utilisateurs qui se connaissent et de pouvoir faire des actions du type "Tu envoies cette image aux autres et après tu l'affiches." ou encore " Lis le fichier musique envoyé l'autre jours". Pour tout ce qui est de la mécanique extérieure au réseau j'y arrive, cependant je bloque au niveau du réseau.

La méthode la plus simple serait sans doute de passer sur du client-serveur, mais personnellement je préfère le modèle P2P et intégrer directement dans le programme la structure pour qu'il soit auto-portant. Cela demande sûrement plus de temps à investir dedans, mais ce n'est pas ce qui est important (enfin, je n'ai pas spécialement envie de battre Wine).

Enfin bref, voilà mon problème.
Quelqu'un pourrait-il me conseiller quelque chose?

P.S.: Pour des raisons que je ne peux pas influencer, le programme devra tourner sous GNU/Linux, Window et Mac OS.

  • # "Une librairie pour du réseau"

    Posté par . Évalué à 6.

    C'est vague.

    "Une librairie pour du réseau", ça veut pas dire la même chose pour tout le monde.

    Pour faire du réseau, la plupart des applications ont besoin :

    • D'une couche de "sérialisation": traduire des structures internes en une série d'octet indépendant de la machine qui peut se balancer sur le réseau
    • Une couche de gestion du protocole: Tu a bien une idée du protocole que tu veux mettre en œuvre. Si tu à des états, il va falloir les gérer. Si tu réutilise un protocole existant, ça te fera moins de boulot.
    • Une couche de session: Qu'est ce qui se passe quand on se connecte et déconnecte. Peut potentiellement aussi gérer l'authentification, le chiffrement …
    • Une couche de transport. Soit un protocole de transport existant suffit (tcp, udp, sctp, dccp … voire HTTP, XMPP, ect…), soit il faut se greffer dessus. Il faut aussi prévoir une couche de transport plus classique si tu veut pouvoir passer à travers des firewall néo-nazis. La couche de transport peut être soit dans l'OS, soit dans une bibliothèque.
    • Une couche d'abstraction de l'API de l'OS, même si les API réseaux sont un tant soit peu normalisés dans des RFC
    • Une gestion d'E/S multiple, soit à coup de poll/select, soit à coup de thread, ou autre. Viens souvent avec la couche d'abstraction, mais pas toujours.

    C'est quoi que tu veux exactement ?

  • # c'est vague

    Posté par . Évalué à 3.

    Déjà tu dis que tu connais deux modules (Qt et SFML), pourquoi ne pas en choisir un des deux? Quels sont les points dans ces deux lib qui font que tu cherches ailleurs? Quels sont les points qui font que ces libs peuvent être intéressantes pour ce que tu veux faire ?

    Bref si tu écartes des libs, ce serait dommage de t'envoyer sur d'autre dont les points qui te rebutent sont aussi présents.

    perso vu que tu vas devoir faire de l'IHM, et que c'est censé être multiplateforme, je prendrait QtNetwork, mais bon c'est juste mon avis perso.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

Suivre le flux des commentaires

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