Migliore documentazione per Boost: asio?


141

La documentazione disponibile sul sito Web boost è ... limitata.

Da quello che sono stato in grado di leggere, il consenso generale è che è semplicemente difficile trovare una buona documentazione sulla libreria boost :: asio.

È davvero così? Se è così, perché?

Appunti:

  • Ho già trovato il sito Web (non boost) di Asio e la documentazione sembra essere identica a quella sul sito Web boost.
  • So che Boost :: asio è nuovo! Sto cercando soluzioni non scuse.

Modificare:

  • C'è una proposta per aggiungere una libreria di rete alla libreria standard per TR2 scritta dall'autore di Boost: asio (Christopher Kohlhoff). Sebbene non sia una documentazione per boost: asio, lo usa come base per la proposta TR2. Dato che l'autore ha fatto più sforzi in questo documento, l'ho trovato in qualche modo utile, se non come riferimento, almeno come una panoramica.

Risposte:


54

In primo luogo, sto usando Boost.Asio già da un po 'di tempo - e condivido la tua preoccupazione. Per rispondere alla tua domanda:

  • C'è davvero poca documentazione su Boost.Asio a parte l'introduzione e il tutorial. Non sono l'autore, ma questo è principalmente perché ci sono troppe cose da documentare per qualcosa di basso livello come una IO Library asincrona.
  • Gli esempi danno più di quanto non facciano i tutorial. Se non ti dispiace passare un po 'di tempo a guardare i diversi esempi, penso che dovrebbero bastare per iniziare. Se vuoi scappare, la documentazione di riferimento dovrebbe aiutarti molto.
  • Chiedi in giro nella mailing list Boost Users e Boost Developers se sei davvero bloccato o stai cercando una guida specifica. Sono abbastanza sicuro che molte persone saranno disposte a rispondere alle tue preoccupazioni sulle mailing list.

Ci sono sforzi (non parte di Boost.Asio) per esporre molte funzionalità e possibili casi d'uso alternativi. Questo nella migliore delle ipotesi è sparso sul Web nei blog e in altre forme di documentazione non impacchettata.

Una cosa che non è chiara e che avrà davvero bisogno di uno stretto coordinamento con l'autore e gli sviluppatori di Boost. La libreria Asio sarebbe fino a estenderla e personalizzarla per una piattaforma specifica o aggiungere nuove funzionalità specifiche. Tuttavia, ciò dovrebbe essere migliorato, ma l'aspetto positivo è che Asio sarà in futuro un'implementazione di riferimento per un report tecnico di una libreria standard (per una libreria IO asincrona nella STL) in futuro.


2
Grazie per aver confermato i sospetti. Sfortunatamente, ho provato ad imparare dagli esempi, con discreto ma limitato successo. Sfortunatamente, non posso giustificare l'uso di una libreria che ha una piccola serie di esempi come serie di istruzioni. Potrei dare ascolto al tuo consiglio di chiedere sul ML, ma attendo con impazienza un supporto migliore!
mmocny,

Ho appena messo insieme due e due. Uno dei colpi top Google (e la maggior parte degli articoli informativi) ho trovato mentre googling spinta ASIO era sul tuo blog :)
mmocny

Sì, ma non volevo ancora dirlo all'aperto. ;) Chis Kholhoff (l'autore) ha anche un blog in cui parla molto di Asio e di come può essere usato in circostanze non così comuni.
Decano Michael,

@mmocny Sono d'accordo, tuttavia la qualità dell'implementazione di ASIO è migliore della maggior parte delle altre librerie di eventi gratuite, specialmente sotto Windows.
unixman83,

63

Una buona documentazione su boost, incluso un capitolo su asio, è disponibile in un libro boost gratuito ( http://en.highscore.de/cpp/boost/index.html) . Il capitolo su asio fornisce una panoramica generale e poi arriva fino a come sviluppare estensioni personalizzate per asio. Uno sforzo davvero fantastico di Boris Schäling!


41

Ho scritto due piccoli articoli che potrebbero essere usati come introduzioni a boost.asio. Sono disponibili dal mio sito


4
Ho trovato il sito Web di Alex Ott in modo indipendente mentre cercavo di utilizzare asio o asso per il nostro progetto attuale. Il suo sito ha risposto a molte delle mie domande.
deft_code

RIP il sito di questo ragazzo. Questo è il motivo per cui pubblichi risposte qui invece di collegarti a siti Web morti fino alla fine dei tempi.
maxywb,

30

NOTA: ho contattato gamedev.net per informarli dei problemi di formattazione. Purtroppo al momento della stesura di questo commento, questa risorsa è più difficile da raccomandare a causa di alcune modifiche al loro sito Web che nascondono / eliminano le istruzioni #include + una risorsa di file .zip mancante.

Un tutorial per principianti relativamente nuovo e molto buono per Boost.Asio (che introduce anche come usarlo in modo efficace con bind, shared_ptr e thread) può essere trovato qui:

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

Nota: se si utilizzano le funzionalità c ++ 0x, molti dei semplici usi di bind per la creazione di un funzione possono essere sostituiti con lambdas e shared_ptr / bind sono disponibili anche nell'ultima versione di Visual Studio (o gcc che include anche thread .)

Durante la ricerca di documentazione o tutorial, questa domanda è emersa nella parte superiore dei risultati di ricerca, quindi è importante tenerlo aggiornato man mano che arrivano nuovi tutorial.


Ottimo collegamento! Sicuramente una buona guida per iniziare con asio
Ralf

1
Grazie per aver postato questo link. Sfortunatamente, ho sentito che proprio mentre stava iniziando a diventare buono, l'autore lascia cadere la palla, scaricandoti direttamente nella libreria che ha creato e mi ha completamente perso. È passato dallo spiegare in dettaglio come bindfunziona lasciando il lettore a indovinare cosa Hivec'è nella loro biblioteca.
Rotsiser Mho,

Hanno l'interfaccia hende defenition + direttamente nel tutorial. Penso che sia utile e sensato perché lo introducono a pagina 10 di 11.
M2tM

Questo articolo menziona un file zip con esempi, ma non ne vedo uno. Inoltre, gli #includes sono tagliati fuori dal codice di esempio?
Jake Gaston,

Ah, sfortunatamente sembra che l'articolo sia stato eroso nelle sabbie del tempo con un aggiornamento al codice di rendering di gamedev.net che sembra non gestire bene le parentesi angolari e non posso garantire la validità di questa risposta in questo momento . Sebbene possa comunque essere un riferimento accettabile, la sua formattazione non è stata chiaramente migrata correttamente. @JakeGaston
M2tM


8

La documentazione di asio, quella disponibile in versione boost, è minimalista ma molto precisa, ogni parola è significativa. Detto questo, ho imparato asio (e continuo a imparare) principalmente da SO.

A mio avviso, la risposta a " Confuso quando boost :: asio :: io_service esegue blocchi / sblocchi metodo " è il primo passo, leggi di nuovo una lettura fino a quando non la capisci davvero, anche la seconda risposta è utile.

Quindi ho sottoscritto RSS per la più recente domanda di tag SO boost-asio e per questi due risponditori:

Tanner Sansburry , l'autore della risposta di cui sopra, le sue risposte sono sempre molto precise, complete, con riferimenti, persino schemi meravigliosi . Feed RSS
Sehe (scusate Sehe, solo secondo). RSS Feed

Con tutto quel materiale, sarai presto un esperto di asio!




0

Un po 'tardi alla festa, ma c'è un libro intitolato "Boost Asio Network Programming" (pubblicazione Packt).

Ho comprato una copia di questo, l'ho letto durante il fine settimana e poi ho scritto un completo sul server in C ++ senza troppi problemi.

Disclaimer: non ho nulla a che fare con il libro


Ow. Ho raccolto penso che 3 libri su Asio di Packt, e non li ho trovati affidabili. Nella misura in cui posso riconoscere quando le persone sono state leggendo i libri sbagliati dal codice di odori hanno copiato nelle loro domande in modo, si veda ad esempio stackoverflow.com/a/48084444/85371 o stackoverflow.com/a/47698904/85371
sehe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.