Můžu se zeptat, proč jste se se seriálem přemístil na roota? To vás z builderu vyhodili? Jinak Vaše články o socketech se mi docela líbí, tady hlavně hodí. Dokonce mi nabyté (resp. prohlobené a oživené, protože už jsem i předtím o socketech něco věděl) trochu pomohly při pohovoru v jedné firmě.
Proc je vlastne v nazvu slanku C++? Jedine, co se tady z C++ skutecne pouziva, jsou pouze iostreamy. Vsechy ostatne veci kolem soketu jsou pouzitelne take v cistem C. Nechci ted kolem toho rozpoutat nejakou hadku - jenom nektere zacatecniky, co ctou tenhle clanek to muze odradit s tim, ze "jak se s tim pak pracuje v cistem C" nebo neco podobne.
Souhlasim s Vami.
Podle mne dnes pouzivat funkci select je zbytecne. Zkuste se podivat na C++ wrappery.
Doporucuji ACE (http://www.cs.wustl.edu/~schmidt/ACE.html).
Zde se vse resi pres tzv. reactor. Je to prenositelne. Na Windows to pouziva WaitForMultipleObjects a kde muze bud poll nebo select.
A samozrejme to umi mnohem vice veci.
Samozřejmě, vše ze soketů lze použít v čistém C. Ostatně sokety jsou o nějaký ten rok starší než C++.
Jde ale o mé ukázkové příklady. Mě C++ připadá pohodlnější. V tomto článku jsou to jen proudy, ale v příštím budu používat vymoženosti STL. S použitím hotových šablon budou ukázkové příklady kratší.
Myslím, že to asi nikoho neodradí.
Publikovat select(2) dnes jiz povazuji za trestne, select(2) je funkce s legacy problemy omezeneho poctu file-descriptoru a zaroven s nizkou efektivitou zpracovani. V novejsich UNIXech se jiz misto select(2) pouziva poll(2) http://www.penguin.cz/cgi-bin/man2html?poll , select(2) jiz jen jako fallback pro crossplatformitu aplikace.
Struktura "fd_set" je pole zahrnujici bity pro vsechny mozne file descriptory systemu, tedy v dobe kompilace omezime program na zpracovani urciteho maximalniho poctu fd (napr. FD_SETSIZE, typicky 1024). Na serverech pak muze byt treba tento per-process pocet zvysit (ulimit -n), coz je pak se select(2) pouzivajicimi aplikacemi nekompatibilni.
Původní seriál je dostupný na adrese: http://www.builder.cz/rubriky/c/c--/sokety-a-c--156186cz
(Dole jsou odkazy na ostatní články seriálu.)