No, pokud jsem si všiml, tak ten převod zvládá i DevCpp, ve kterém byly dělané projekty pro Windows k tomuto seriálu ještě na Builderu...
Vim je supr, ale občas mám dojem, že je barevný až příliš ;). Zatím jsem ještě neměl chuť v něm dolovat jak se dají jednotlivé barvy ve schématu měnit (poučíte mne tu někdo?).
Ano s tím DevCpp je to pravda. Sám jsem s ním na Builderu syntaxi barvil. Jenomže stejně jako cpp2html je problém s tím, že očekává bílé pozadí (root má černé). Sice v DevCpp jde barva pozadí měnit, ale mě se nechce jen pro psaní článků přeházet celé nastavení editoru (a pak ho zase vracet aˇt se s tím dá dělat :-) ). Možná mi ale nebude nic jiného zbývat. Ještě se jdu mrknout na ten (g)vim.
V clanku se pise, ze prvni parameter je potreba nastavit takto (Linux):
Ve třech množinách jsou vlastně celá čísla. Vezmeme nejvyšší z těchto čísel, zvýšíme ho o 1 a máme číslo, které předáme jako první parametr.
Tak takhle to neni, i kdyz vysvetleni v manualovych stranakch pise neco podobneho. Ve skutecnosti se dava jako prvni parametr pocet deskriptoru z nejvetsiho setu + 1 (mam-li v setech 1,2 a 3 descriptory, tak tam dam 4). Viz include sys/select.h:
Check the first NFDS descriptors each in READFDS (if not NULL) for read readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS (if not NULL) for exceptional conditions.
SETy jsou staticka pole, ktere se postupne prohledavaji, takze nfds udava pocet prvku, ktere se maji prohledat.
Pokud se s tim nechcete zatezovat, tak pouzijte jako prvni parametr FD_SETSIZE, ktere prohleda cele pole :-).
Neviem, ci je to tak, ako hovoris.
V 'man select' sa pise:
int select(int n, ...
n is the highest-numbered descriptor in any of the three sets, plus 1.
Ako som pozeral kod, stale je fd_set bitove pole a maskuju sa bity, ktore chceme selectovat resp. nechceme.
Takze v Linuxe to nie je pole file descriptorov.
'man select_tut'
hovori to iste.
Aku libc pouzivas?
Trochu jsem znejistěl :-) Ale nakonec si přece jen stojím za svým článkem. Můžete třeba i zkusit v tom ukázkovém serveru (bavíme se o linuxové verzi) změnit první parametr select na konstantní 2. Podle toho, co píšete by mělo první volání select fungovat (V 1. množině je jen jeden soket). Ale nefunguje.
Vždy jsem se snažil, aby mé články nebyly opis žádného manuálu. Je mi líto jestli takovým dojmem moje články působí.
Jestli nic jiného, tak v manuálu
1) Je jiný příklad
2) Není srovnání se selectem z WinSock
3) Manuál k select není součástí více na sebe navazujících článků (typu krok za krokem) o soketech.
Mam takovy rypavy dotaz, co ma clanek spolecneho s C++? Zdrojaky jsou ciste C, pravda je, ze do prilozenych prikladu jsem nekoukal. Nehodilo by se k C++ spis ACE nebo neco podobneho, co zapouzdruje sockety do skutecneho C++?
Btw, ten banner MicroSoftu(r) me nejprve rozesmal, ale ted uz me taky stve. Navic mi jejich slogany napadne pripominaji ty, ktere pouziva i muj zamestnavatel (kerio).
Přiložené příklady právě v C++ jsou. Dost hodně využívají STL.
Samozřejmě soketové API lze použít v čistém C.
A jste si tím jistý, že to je C? Existují dle normy v C jednořádkové komentáře? Dlouho v normě nebyly (i když je překladače znaly). Pak přišla nová norma a možná to tam je, možná ne. Já to nevím. A určitě kvůli toho nebudu hledat něco v dokumentaci k normě. Prostě napíšu C++ a mám klid.
Myslím si, že C nebo C++ v nadpisu není zas tak důležité. A navíc příklady ke stažení jsou v C++. Já totiž šablony z STL používám, kde se dá.
Mam jednoduchy servrik, ktery v pohode uz dlouho beha pod linuxem - pouziva select - ted sem se pokusil ho predelat na Win a je problem -
select(0, &testfds, NULL, NULL, NULL)
vrati -1 (chyba) a WSAGetLastError vrati 10022 (WSAEINVAL = The time-out value is not valid, or all three descriptor parameters were NULL.)
jenze vrati to i kdyz tam dam jejaky timeout, a &testfds na 100% neni null ... takze sem z toho jelen.. nevi nekdo cim by to mohlo byt (jinak az do toho selectu je vse ok - tj WSAStartup, socket, bind, listen - vse ok..
Mám problém. listenujem viac socketov, ale accept mi reaguje na connect toho portu ktorý volám ako prvý. viacnásobné pripojenia fungujú, ale len na ten jeden port. netstat v systéme mi ukazuje že porty su connectnuté ale accept nereaguje. Ak začnem s tým druhým portom tak zase funguje ten ale prvý nie. čo som tam zabudol ?? sú nastavené na nonblock .