socket programming (BSD like)

Stanislav Meduna stanom na etm.at
Středa Únor 6 09:00:31 CET 2002


"Richard Willmann, PC Revue" <rwillmann na pcrevue.com> schrieb im Newsbeitrag
news:065001c1ae64$d9f131f0$150ba8c0 na rwillmann...

> ano, selekt resp. poll povie ze da sa citat/pisat/vyskytla sa chyba. otazkou
> je, ze ci ak zavolam read() s bufferom velkosti 10KB sa mi vrati 1KB (to co
> uz je pripravene v kerneli) alebo to bude cakat na dalsich 9KB. Pri read() a
> write() je napisane, ze to moze vratit menej nez je velkost bufferu a preto
> treba citat dokola az kym to nevrati nulu ze EOF.

Ak sa nemylim, read vrati co ma. Write ale urcite moze a bude blokovat,
pokial sa don budete snazit natlacit viac dat, na kolko je miesto.

> Btw: nie je tam nejaky watermark? tusim som niekde videl, ze
> sa da nastavit velkost kerneloveho bufferu pre citanie/zapis.

Be liberal in what you accept, be conservative in what you produce.
Co pojde na Linuxe, nemusi ist na inych systemoch, implementacia
v jadre sa moze zmenit a.p. Pokial mate hlavnu slucku so select-om
a blokovanie vam vadi (ci uz z dovodu, ze obsluhujete viac klientov,
alebo z dovodu, ze sucasne pisete aj cakate odpoved a bojite sa
deadlocku), pravidlom je pouzit nonblocking sockety. Pokial ide len
o prenos dat, s pouzitim nie su problemy. Pokial robite aj non-blocking
connect, to uz je trochu seda oblast, kde sa rozne systemy chovaju
rozne.

Mimochodom, pokial zacinate nieco pisat od nuly, je to v C++
a nejde o trivialnu aplikaciu, pozrite sa na
  http://www.cs.wustl.edu/~schmidt/ACE.html
Je to platformovo nezavisla OO kniznica implementujuca vela
idiomov software, ktoreho podstatnou castou je komunikacia.

Zdravi
--
                                                     Stano




Další informace o konferenci Linux