Meilleure documentation pour Boost: asio?

141

La documentation disponible sur le site Web de boost est ... limitée.

D'après ce que j'ai pu lire, le consensus général est qu'il est simplement difficile de trouver une bonne documentation sur la bibliothèque boost :: asio.

Est-ce vraiment le cas? Si oui, pourquoi?

Remarques:

  • J'ai déjà trouvé le site Web Asio (sans boost) - et la documentation semble être identique à celle du site Web boost.
  • Je sais que Boost :: asio est nouveau! Je cherche des solutions et non des excuses.

Éditer:

mmocny
la source

Réponses:

54

Premièrement, j'utilise Boost.Asio depuis un certain temps déjà - et je partage votre inquiétude. Pour répondre à votre question:

  • Il y a vraiment très peu de documentation sur Boost.Asio en dehors de l'introduction et du tutoriel. Je ne suis pas l'auteur, mais c'est principalement parce qu'il y a trop de choses à documenter pour quelque chose d'aussi bas niveau qu'une bibliothèque d'E / S asynchrone.
  • Les exemples en disent plus que les tutoriels. Si cela ne vous dérange pas de passer un peu de temps à regarder les différents exemples, je pense qu'ils devraient suffire pour vous aider à démarrer. Si vous voulez vous en sortir, alors la documentation de référence devrait vous aider beaucoup.
  • Renseignez-vous dans la liste de diffusion Boost Users et Boost Developers si vous êtes vraiment bloqué ou si vous recherchez des conseils spécifiques. Je suis presque sûr que beaucoup de gens seront prêts à répondre à vos préoccupations sur les listes de diffusion.

Il y a des efforts (ne faisant pas partie de Boost.Asio) pour exposer une grande partie des fonctionnalités et des cas d'utilisation alternatifs possibles. Au mieux, cela est dispersé sur le Web dans des blogs et d'autres formes de documentation non packagée.

Une chose qui n'est pas claire et qui nécessitera vraiment une coordination étroite avec l'auteur et les développeurs de la bibliothèque Boost.Asio serait de l'étendre et de la personnaliser pour une plate-forme spécifique ou d'ajouter de nouvelles fonctionnalités spécifiques. Cela devrait être amélioré, mais la bonne chose est qu'il semble qu'Asio soit une implémentation de référence pour un rapport technique de bibliothèque standard (pour une bibliothèque d'E / S asynchrone dans la STL) à l'avenir.

Dean Michael
la source
2
Merci d'avoir confirmé les soupçons. Malheureusement, j'ai essayé d'apprendre des exemples, avec un succès décent mais limité. Malheureusement, je ne peux pas justifier l'utilisation d'une bibliothèque qui a un petit ensemble d'exemples comme un ensemble d'instructions. Je peux tenir compte de vos conseils pour demander sur le ML, mais j'attends avec impatience un meilleur soutien!
mmocny
Je viens de mettre deux et deux ensemble. L'un des meilleurs hits google (et des articles les plus informatifs) que j'ai trouvé en googlant Boost asio était sur votre blog :)
mmocny
Ouais, mais je ne voulais pas encore le dire au grand jour. ;) Chis Kholhoff (l'auteur) a également un blog dans lequel il parle beaucoup d'Asio et comment il peut être utilisé dans des circonstances pas si courantes.
Dean Michael
@mmocny Je serais d'accord, mais la qualité de l'implémentation d'ASIO est meilleure que la plupart des autres bibliothèques d'événements gratuites, en particulier sous Windows.
unixman83
63

Une belle documentation sur boost, y compris un chapitre sur asio, peut être trouvée dans un livre (gratuit) boost à http://en.highscore.de/cpp/boost/index.html . Le chapitre sur asio donne un aperçu général et va jusqu'à comment développer vos propres extensions asio personnalisées. Effort vraiment fantastique de Boris Schäling!

Ralf
la source
41

J'ai écrit deux petits articles qui pourraient être utilisés comme introductions à boost.asio. Ils sont disponibles sur mon site

Alex Ott
la source
4
J'ai trouvé le site Web d'Alex Ott de manière indépendante tout en cherchant à utiliser ou non asio ou ace pour notre projet actuel. Son site a répondu à plusieurs de mes questions.
deft_code
RIP le site de ce gars. C'est pourquoi vous publiez des réponses ici au lieu de créer des liens vers des sites Web morts jusqu'à la fin des temps.
maxywb
30

REMARQUE: j'ai contacté gamedev.net pour leur faire part des problèmes de formatage. Malheureusement, au moment de la rédaction de ce commentaire, cette ressource est plus difficile à recommander en raison de certaines modifications apportées à leur site Web qui masquent / suppriment les instructions #include + une ressource de fichier .zip manquante.

Un tutoriel pour débutant relativement nouveau et très bon pour Boost.Asio (qui présente également comment l'utiliser efficacement avec bind, shared_ptr et threads) peut être trouvé ici:

http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=1

Remarque: Si vous utilisez les fonctionnalités c ++ 0x, de nombreuses utilisations simples de bind pour créer un foncteur peuvent être remplacées par des lambdas, et shared_ptr / bind sont également disponibles dans la dernière version de visual studio (ou gcc qui inclut également des threads .)

Lorsque je cherchais de la documentation ou un didacticiel, cette question ne cessait de surgir en haut des résultats de recherche, il est donc important de la tenir à jour à mesure que de nouveaux didacticiels apparaissent.

M2tM
la source
Excellent lien! Certainement un bon guide pour commencer avec asio
Ralf
1
Merci d'avoir publié ce lien. Malheureusement, j'ai senti que juste au moment où cela commençait à devenir bon, l'auteur lâche la balle, vous jetant directement dans la bibliothèque qu'il / elle a créée, et m'a complètement perdu. Il / elle est passé d'expliquer en détail le bindfonctionnement à laisser le lecteur deviner ce qu'il Hivey a dans sa bibliothèque.
Rotsiser Mho
Ils ont la défenition + interface de la ruche directement dans le tutoriel. Je pense que c'est utile et logique car ils l'introduisent à la page 10 sur 11.
M2tM
Cet article mentionne un fichier zip avec des exemples, mais je n'en vois pas. De plus, les #includes sont supprimés de l'exemple de code?
Jake Gaston
Ah, malheureusement, il semble que l'article s'est érodé dans le sable du temps avec une mise à jour du code de rendu de gamedev.net qui ne semble pas du tout gérer les crochets angulaires et je ne peux pas garantir la validité de cette réponse pour le moment. . Bien qu'il puisse encore être une référence correcte, son formatage n'a clairement pas été correctement migré. @JakeGaston
M2tM
8

La documentation asio, celle disponible en boost, est minimaliste mais très précise, chaque mot est significatif. Cela dit, j'ai appris asio (et continue d'apprendre) principalement de SO.

À mon avis, la réponse à `` Confused when boost :: asio :: io_service run method blocks / unblocks '' est la toute première étape, lisez à nouveau jusqu'à ce que vous la compreniez vraiment, la deuxième réponse est également utile.

Ensuite, j'ai souscrit RSS à la dernière question sur la balise SO boost-asio et à ces deux réponses:

Tanner Sansburry , l'auteur de la réponse ci-dessus, ses réponses sont toujours très précises, complètes, avec des références, même de beaux schémas . Flux RSS
Sehe (désolé Sehe, seulement 2ème). flux RSS

Avec tout ce matériel, vous serez bientôt un expert asio!

Jean Davy
la source
0

Je suis tombé sur le pdf suivant: http://boost.cowic.de/rc/pdf/asio_doc.pdf

Kisalay
la source
17
Mais attendez ... c'est la même chose, uniquement en pdf . Qui a voté pour ça!?
Oleh Prypin
1
@BlaXpirit Comme quoi?
expert du
0

Un peu tard à la fête mais il y a un livre intitulé "Boost Asio Network Programming" (Packt Publishing).

J'ai acheté une copie de ceci, je l'ai lu pendant le week-end, puis j'ai écrit une copie complète sur le serveur en C ++ sans trop de problèmes.

Avertissement: je n'ai rien à voir avec le livre

Dave F
la source
Ow. J'ai ramassé, je pense, 3 livres sur Asio de Packt, et je ne les ai pas trouvés dignes de confiance. Dans la mesure où je peux reconnaître quand les gens ont lu les mauvais livres à partir du code, les odeurs copiées dans leurs questions SO, voir par exemple stackoverflow.com/a/48084444/85371 ou stackoverflow.com/a/47698904/85371
sehe