abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 19:46 | Nová verze

dnsdist, specializovaný balancer pro DNS provoz, dosáhl stabilní verze 1.2.0. Tento software vyvíjí komunita kolem PowerDNS a neměl by uniknout pozornosti nikomu, kdo provozuje vytíženější rekurzivní DNS servery. Balancer je vhodný k obraně před DDoS útoky, je skriptovatelný v LUA, disponuje konzolovým rozhraním a má spoustu dalších zajímavých vlastností.

… více »
BigWrigley | Komentářů: 0
včera 15:22 | Nová verze

Byla vydána verze 9.5 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu. Zdůraznit lze možnost ověřování GPG podpisů u commitů.

Ladislav Hagara | Komentářů: 2
22.8. 16:22 | Nová verze

Byla vydána verze 0.11.0 softwaru pro statistickou analýzu dat GNU PSPP (Wikipedie), svobodné alternativy k proprietárnímu softwaru IBM SPSS Statistics (Wikipedie). Vedle několika vylepšení a oprav chyb jsou řešeny také 2 bezpečnostní chyby CVE-2017-10791 a CVE-2017-10792. O týden později byla vydána verze 1.0.0 přinášející pouze aktualizaci překladů. Proč verze 1.0.0 a ne například 0.11.1? Dle vývojářů jsou důvody následující:

… více »
Ladislav Hagara | Komentářů: 0
22.8. 10:35 | Komunita

Na blogu Oracle se objevila zpráva o tom, že plánovaná verze Java EE 8 bude uvolněna jako open source (referenční implementace a compatibility kit). V současné době je uvolněna jen Java SE (standard edition) pod licencí GPLv2 v podobě OpenJDK (Open Java Development Kit), kterou začal v roce 2006 uvolňovat Sun.

Max | Komentářů: 4
21.8. 23:55 | IT novinky

Google na YouTube oficiálně představil Android 8.0 Oreo. Přehled novinek v příspěvku na blogu věnovaném vývojářům.

Ladislav Hagara | Komentářů: 33
21.8. 16:44 | Zajímavý článek

Po téměř 3 měsících od vydání třetího čísla publikoval Michal Špaček na svých stránkách čtvrté číslo newsletteru věnovanému bezpečnosti, bezpečnému vývoji převážně webových aplikací a bezpečnosti uživatelů. Jedná se současně o číslo poslední: "Nepíše se mi to lehce, a trvalo to, než jsem to ze sebe dostal, ale tohle je poslední newsletter v této podobě. Ani jsem ho nestihl pojmenovat a už jsem ho zabil. Nezbývá mi tolik času, abych každou událost, novinku a změnu v prohlížeči detailně popisoval tak, jak bych v newsletteru chtěl, mrzí mě to".

Ladislav Hagara | Komentářů: 2
21.8. 07:00 | Nová verze

Byla vydána diaspora* ve verzi 0.7.0.0. Jedná se o svobodný software, který slouží jako osobní webový server pro poskytování služeb sociální sítě (Wikipedie). Přehled novinek v příspěvku na blogu a na GitHubu. Sociální síť diaspora* byla před pěti lety předána komunitě.

Ladislav Hagara | Komentářů: 0
21.8. 06:00 | IT novinky

Společnost Hardkernel stojící za jednodeskovými počítači ODROID představila na YouTube minipočítač určený pro domácí cloud ODROID-HC1 vycházející z ODROID-XU4. Minipočítač s kovovou krabičkou, do které stačí vložit 2 a půl palcový disk, lze koupit za 49 dolarů. ODROID-HC1 je stohovatelný.

Ladislav Hagara | Komentářů: 39
20.8. 16:22 | Nová verze

Byl vydán DB Browser for SQLite (sqlitebrowser) ve verzi 3.10.0. Nejnovější stabilní verze této grafické nadstavby nad relačním databázovým systémem SQLite (Wikipedie) přináší například integraci s DBHub.io, tj. platformou pro sdílení SQLite databází. Podrobnosti na GitHubu.

Ladislav Hagara | Komentářů: 2
20.8. 08:00 | IT novinky

Andy Rubin, spoluzakladatel společnosti Android, jež byla v roce 2005 koupena Googlem, nyní CEO společnosti Essential Products, oznámil předprodej chytrého telefonu Essential. Telefon se začne rozesílat 1. září. Cena telefonu je 699 dolarů. Cena telefonu současně s 360° kamerou s rozlišením 4K byla stanovena na 749 dolarů. Kameru, v budoucnu i další příslušenství, lze k telefonu připojit pomocí konektoru s magnety.

Ladislav Hagara | Komentářů: 1
Těžíte nějakou kryptoměnu?
 (5%)
 (2%)
 (18%)
 (76%)
Celkem 374 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: C sitova aplikace, ztrata tal odpovedi

    6.10.2009 18:55 Karel Dlouhy
    C sitova aplikace, ztrata tal odpovedi
    Přečteno: 700×

    Dobry den, delam jednoduchou sitovou aplikaci v C, ktera vysle HTTP pozadavek a prijde odpoved. Odpoved prijimam nadvakrat, nejdrive hlavicku odpovedi, pote telo:

        int BUFSIZE = 1;    
    
        // read HTTP response header
        while ((size = recv(s, buf, BUFSIZE, MSG_WAITALL)))
        {
            cout << "1";
            response_header += buf[BUFSIZE-1];
            i = response_header.find("\r\n\r\n");
            if (i != std::string::npos)
                break;
        }
    
        cout << "Response header:\n" << response_header << endl;
    
        // read HTTP response body
        while ((size = recv(s, buf, BUFSIZE, MSG_WAITALL)))
        {
            cout << "2";
            response_body += buf[BUFSIZE-1];
            i = response_body.find("\r\n\r\n");
            if (i != std::string::npos)
                break;
        }
        cout << "Response body:\n" << response_body << endl;
    

    Mam vsak problem, ze hlavicka se nacte a zobrazi v poradku a pote program zamrzne takto:

    111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111Response1:
    HTTP/1.1 200 OK
    Content-Type: text/plain
    Cache-control: no-cache, no-store
    Pragma: no-cache
    Expires: Mon, 01-Jan-1990 00:00:00 GMT
    Date: Tue, 06 Oct 2009 16:54:13 GMT
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 0
    Content-Length: 584
    Server: GFE/2.0
    
    
                       
    

    Navic se nevypisuji ani dvojky, ktere jsou v druhem cyklu, to znamena, ze program necykli, proste jen stoji za prikazem vypsani hlavicky odpovedi

    Kdyz takto necham program viset v konzoli nekolik minut, telo se nakonec nacte. Proc je tam ale vzdy ten dlouhy zasek?

    Odpovědi

    6.10.2009 19:13 Karel Dlouhy
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Tak jsem zjistil, ze toho tela odpovedi se nekdy nedockam vubec, program se proste zasekne. Divne...

    6.10.2009 19:48 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Nevím, jak se chová string::find(), ale rozhodně byste si měl hlídat návratovou hodnotu z recv(), protože může být i -1.

    Pokud potřebujete zjistit, jak si program povídá s jádrem, zkuste nástroj strace(1).

    A pro skutečné nasazení otravovat jádro po jednom bajtu je neefektivní. Zkuste větší buffer.

    7.10.2009 17:42 wintermute
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    No pre vacsi buffer ako 1 mu to fungovat nebude lebo ked si ho da napr. 1K tak sa mu moze stat, ze prvym recv si nacita aj cast tela, teoreticky aj celu poziadavku a ten druhu recv pre telo uz nebude mat co nacitat. Je to ukazka toho ako sa programovat nema. Problem toho programu je, ze je to kus bordelu. Autor by si mal sadnut a navrhnut poriadne to co chce robit. A az potom sa pustit do pisania programu. Respektive predtym by si mal este nastudovat programovacie techniky.

    6.10.2009 23:20 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Zajímavé, mě to funguje (http://gist.github.com/acfbf88598c50c00325a).

    Chybu ve tvém případě odhaduji v:
    1. cout << "2"; se bufferuje, text se odešle až po flushnutí nebo zapsání \n. Zkus tam dát třeba cout << "2" << flush;
    2. zde uvedený příklad není to, co ve skutečnosti spouštíš; ve skutečnosti třeba může HTTP spojení zůstat otevřené a čekat na další požadavek, pokud je v režimu connection: keep-alive (uvedeno i v hlavičkách odpovědi)
    3. něco ošklivého se stane a recv() vrátí -1, čímž neskončí cyklus, i když by měl
    4. všeobecně hrozná kvalita kódu, možná včetně toho, který tu ani nevidíme :)
    BTW. HTTP odpověď není ukončena sekvencí \r\n\r\n (takto jsou jen odděleny hlavičky od těla). find je v druhém cyklu nesmyslný a může způsobovat useknutí odpovědi.

    Pevně doufám, že až to rozchodíš, vezmeš si k srdci i rady od petr_p.
    7.10.2009 10:32 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Ja by som este dodal, ze toto NIE JE (!!!) jazyk C, ale C++.

    Btw. pred tym nez zacnes pisat program je dobre si zvolit spravny jazyk. Pre pracu s textami (hlavne bez GUI) su vhodne skriptovacie jazyky - napr. perl, python, bash. C/C++ sa vyuziva pri rieseni zlozitych algoritmickych/matematickych uloh. Ak chces GUI aplikaciu tak volis Java/C#/C++.

    Samozrejme, ze vsetko sa da spravit v kazdom jazyku, ale niektory jazyk ti ulohu skomplikuje viac ako iny...

    7.10.2009 14:46 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Bože, to je prasárna.
    In Ada the typical infinite loop would normally be terminated by detonation.
    7.10.2009 16:08 wintermute
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Dufam, ze to si pisete tu aplikaciu len tak lebo vas to bavi. Dufam, ze to nieje nejaka komercna zakazka a ze Vy nepracujete ako programator. Ak pracujete ako programator tak to lutujem vaseho klienta. Osobne by som Vam potom odporucil zmenu zamestnania. Na to sa neda ani pozerat.

    Odhliadnuc od toho, ze miesate dohromady C a C++. Pre pripad kedy BUFSIZE bude ine ako 1 vam to aj tak, nebude fungovat. Prepinat kontext z userspace do jadra pri kazdom prijimanom znaku je asi nejaka technika ako zabezpecit procesoru aby sa nenudil. A keby sa nahodou nudil tak po kazdom prijatom znaku mu date pekne prehladat stale vsetko co ste zatial prijali. Ved dnesne procaky su rychle tak naco spravit s kazdym znakom 4 operacie ked ich mozete spravit 4000 vsakze.

    Hovorim Vam nieco pojem: Programovacie techniky? Zvykne sa to ucit na niektorych skolach.

    Bohuzial takto programuje 95% "programatorov".

    8.10.2009 21:45 rastos | skóre: 60 | blog: rastos
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Prepinat kontext z userspace do jadra pri kazdom prijimanom znaku je asi nejaka technika ako zabezpecit procesoru aby sa nenudil
    O to sa snáď stará runtime, nie? Prečo by read() musel prepínať do jadra, keď môže jednoducho vrátiť ďalší znak z bufferu, ktorý bol jadrom prijatý naraz v jednom kroku a odovzdaný runtime knižnici? (Len sa pýtam. Pripadá mi logické, aby to tak bolo.)
    oroborus avatar 8.10.2009 22:03 oroborus | skóre: 20 | blog: Bulanci
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    >>O to sa snáď stará runtime, nie?

    IMHO funkcia read je iba wrapper pre systemove volanie read a pri kazdom systemovom volani dojde k prepinaniu kontextu z userspace do jadra.
    8.10.2009 22:09 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Ne, read() je interface jádra. Tím, čemu říkáš runtime, je třeba libc a její funkce fread(), nebo std::fstream; to je to, co si vede buffer a v případě potřeby volá read().

    Je to vidět třeba na tom, že read() se volá s file deskriptorem typu int jako parametrem, což je vlastně offset do nějaké tabulky vedené jádrem, kdežto fread() s parametrem typu FILE*, což je struktura obsahující právě ten buffer, informace o pozici apod. A také je to napsané v manuálových stránkách všech těchto funkcí (a ty manuálové stránky jsou podle toho v příslušných sekcích, tj. 2 nebo 3).
    9.10.2009 07:45 rastos | skóre: 60 | blog: rastos
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    S tým sa dá súhlasiť, ale išlo mi o to, že to *môže* byť inak. Napr. ak daný kód pobeží na Windowsoch, tak zodpovedajúce funkcie jadra budú CreateFile/ReadFile/... a práve open/read/.. je tým wrapperom. Na inom OS to zasa môže byť inak. Čiste teoreticky by sa preto programátor nemusel zaujímať o to, či dôjde k prepnutiu do jadra. Zaujímavé je to len v prípade, keď vie na akej platforme pobeží a chce z nej vyžmýkať všetko čo sa dá. To už ale spadá pod tému "predčasná optimalizácia je ...". Je pravdepodobné, že čítať viac bajtov naraz je optimálnejšie, ale za tak hrubú chybu by som to nepovažoval.
    8.10.2009 17:44 Karel Dlouhy
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Stezovali jste si, ze micham C a C++, jak tedy ale nactu ze socketu C++ string? Jedine co me napadlo je to do nej kopirovat takto pismenko po pismenku. Vsichni jste to zdrbali, ale tak nekdo napiste jak to tedy poradne programatorsky udelat, rad se poucim...

    8.10.2009 19:59 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Jak programovat komunikaci síť? Můžeš použít standardní knihovnu C, která implementaci bufferu/streamu samozřejmě obsahuje; sice především pro soubory, ale obsahuje i „kouzelnou“ funkci fdopen() (stream pro čtení a stream pro zápis se musí otevřít zvlášť, nelze mít jeden na obojí).

    Můžeš použít nějakou implementaci pro C++. Standardní knihovna (STL) C++ sice streamy taky umí, ale pokud vím, nelze přímo pracovat s nějakým už předem otevřeným file deskriptorem (lze to ale celkem snadno doprogramovat). Nebo použít Boost.

    Takový buffer si i můžeš udělat sám. Jde o to mít nějaký buffer (pole char), třeba cyklický, do něj zapisovat data přečtená pomocí read(). Musíš si hlídat, kde ti data začínají, kde končí apod.. Z tohoto bufferu můžeš vytvářet C++ řetězce (std::string), buď dané délky, nebo mít tam nějakou logiku na detekci řádků. A to logiku pokud možno efektivnější než pokaždé volat find("\n") na všechna přečtená data. Zkoušel jsem najít nějaký příklad, ale žádný pěkný a v C++ jsem nenašel, což bude asi tím, že každý rozumný programátor na to použije nějakou knihovnu.

    K míchání C a C++ – samozřejmě, že pokud to budeš dělat celé sám, tak se Céčkovým věcem úplně nevyhneš, protože systémová volání se takto prostě volají. Mě se ale nezdá, že bys v nějak extrémně míchal C a C++, to spíš ten jednobytový buffer a ignorování chybových návratových hodnot je větší pecka než míchání nízkoúrovňových volání s řekněme aplikační logikou.
    9.10.2009 16:10 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Standardní knihovna (STL) C++ sice streamy taky umí, ale pokud vím, nelze přímo pracovat s nějakým už předem otevřeným file deskriptorem (lze to ale celkem snadno doprogramovat).

    Problém je v tom, že C++ jako abstraktní jazyk (a tedy ani standardní C++ knihovna) pojem file descriptor vůbec nezná, takže může být v principu implementován(a) i na platformě, kde nic takového neexistuje. Proto ani součástí standardní C++ knihovny nemůže být funkce, která by umožnila C++ stream svázat s deskriptorem. Možné přístupy jsou asi tak tři:

    • použít nekompatibilní rozšíření konkrétní implementace (GNU takové mívala, ale IIRC už nemá)
    • pomocí fdopen() to nejdřív navázat na céčkový stream
    • napsat si vlastní třídu rozšiřující basic_streambuf a pomocí ní pak už snadno i třídu rozšiřující basic_stream

    Postupně jsem od první možnosti přes druhou došel až ke třetí.

    AraxoN avatar 8.10.2009 21:35 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Pokiaľ ide o HTTP requesty v C/C++, tak namiesto takýchto pokusov by som do toho zapojil knižnicu libcurl. Tá rieši aj plno vecí, na ktoré si ani nepomyslel - napríklad redirect, partial response, kompresiu, keep-alive, a tak podobne. Ver mi - bol som tam kde ty si teraz a rozhodol som sa programovať si takéto somariny sám. Bolo to zlé rozhodnutie.

    Pokiaľ ide o samotné Tvoje C/C++, tak majú kolegovia zväčša pravdu. Ak je to možné, tak by som sa sústredil na jednoduchšie príklady.

    A pokiaľ ide o Tvoju schopnosť položiť správne otázku - ak chceš aby Ti ľudia pomohli to opraviť, mal si zverejniť (najlepšie v prílohe) taký kus kódu, ktorý je možné skompilovať a otestovať. Nikomu sa nechce okolo toho ešte domýšľať a dopisovať hlavičky, includy a ďalšie veci aby to aspoň prešlo GCCčkom. Tvoj fragment kódu ale už od pohľadu nekorešponduje s tým debugovým výpisom, čo si dal ("Response header" vs. "Response1") takže ja osobne som v tom momente stratil chuť sa tým ďalej zaoberať.

    A pokiaľ ide o môj názor čo by si naozaj mal urobiť - ak to nie je kód, ktorý sa bude spúšťať milión-krát za sekundu, alebo kód spúšťaný na zariadení s 16 MB RAM, tak podľa mňa je ďaleko najefektívnejšie prepísať ho do nejakého skriptovacieho jazyka, ktorý lepšie odpúšťa chyby. Lebo C/C++ chyby neodpúšťa a môžeš byť aký chceš profík, aj tak sa Ti občas podarí v 10-riadkovej funkcii urobiť 7 syntaktických chýb, jeden memory leak a 2 logické chyby čo budú po pamäti zapisovať krížom krážom až do segmentation fault.

    A fine is a tax for doing wrong. A tax is a fine for doing well.
    9.10.2009 06:21 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    +1
    In Ada the typical infinite loop would normally be terminated by detonation.
    9.10.2009 15:11 Karel Dlouhy
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Dekuji moc za reakce, poucim se. O libcurl vim, ale na komunikaci chci pouzit pouze BSD sockety (mam sve duvody tak me prosim nekamenujte:)). Jde mi o to, ze nevim jak tedy po odeslani HTTP pozadavku na server korektne prijmout odpoved, tak abych data nemusel nacitat po jednom znaku a zaroven nehrozilo, ze se mi while cyklus zacykli. Jak uz tu nekdo psal, tato (podle me) elementarni operace nejde v C/C++ na urovni socketu skoro nikde vygooglit.

    Muze mi tu tedy prosim nekdo placnout jednoduchy kod, jak korektne na to?

    9.10.2009 21:23 benn | skóre: 18
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Zdravím,

    zde je pěkný přehled příkladů na sítování:

    www.cs.utah.edu/~swalton/listings/sockets/programs/

    Hledejte http-client.c

    AraxoN avatar 10.10.2009 12:55 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi

    Keď potrebuješ naraz celú hlavičku a celé telo v pamäti, tak jedinou možnosťou je mať alokovaný tak veľký kus pamäte. Ak chceš byť slušný a nechceš rovno alokovať jedno mega, tak je možnosťou pred každým recv() cez realloc() predĺžiť buffer o toľko, koľko recv() následne chceš povoliť načítať. Recv() to musí zapísať od miesta kde predtým skončil a toto samozrejme nerobí automaticky. Správnu adresu kde má recv() pokračovať musíš evidovať ty a ty mu ju musíš poskytnúť. Keď už máš celú odpoveď v pamäti, operácia nájdenia "\r\n\r\n" je triviálna. Ak potrebuješ hlavičku spracovať skôr ako načítaš telo, tak budeš hľadať "\r\n\r\n" priebežne. Rozhodne by som na to nerobil 2 cykly.

    A fine is a tax for doing wrong. A tax is a fine for doing well.
    11.10.2009 17:57 Karel Dlouhy
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Co se tyce alokace, to uz chapu, ale nevim jak korektne ukoncit tu while podminku po nacteni tela odpovedi.
    AraxoN avatar 11.10.2009 18:34 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Nespôsobuje Tvoj problém keep-alive? MSG_WAITALL čaká až do ukončenia spojenia a je kľudne možné, že server spojenie nezatvára, lebo čaká či ešte niečo nebudeš od neho chcieť.
    A fine is a tax for doing wrong. A tax is a fine for doing well.
    11.10.2009 18:40 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Po určité době ho ale stejně zavře, typicky to bývá 5-20 sekund. V každém případě by ale klient měl konec odpovědi detekovat korektně, tj. podle Content-Length, a samozřejmě také implementovat dekódování chunked encoding.
    11.10.2009 21:14 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Server spojení ukončí sám po odeslání odpovědi, takže cyklus má skončit poté, co read() nebo recv() vrátí 0.

    HTTP umožňuje ještě režim keep-alive, kdy server čeká na další požadavek, ale AFAIK tento režim se zapíná hlavičkou v požadavku, kterou doufám neposíláš... Pro jistotu můžeš přidat do požadavku hlavičku Connection: close.

    Jinak samozřejmě nejlepší chování by bylo umět navíc používat Content-Length a chunked odpovědi, ale na to už opravdu jsou hotové knihovny.
    11.10.2009 21:21 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    HTTP umožňuje ještě režim keep-alive, kdy server čeká na další požadavek, ale AFAIK tento režim se zapíná hlavičkou v požadavku, kterou doufám neposíláš... Pro jistotu můžeš přidat do požadavku hlavičku Connection: close.

    Naopak, v HTTP/1.1 je keep-alive default.

    12.10.2009 17:28 Ivan
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Jestli se muze zeptat - jake duvody to jsou? Takhle ten vas dotaz vypada jako "Potrebuju poradit jak se strelit do nohy a nereknu vam proc".

    Ivan PS: proc size write-only promenna?
    Bedňa avatar 13.10.2009 09:50 Bedňa | skóre: 33 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: C sitova aplikace, ztrata tal odpovedi
    Dúfam že nezanevrieš na poradňu po týchto odpovediach čo tu odzneli :-) Neviem či netrafím vedľa, ale asi chceš s/na server prenášať dáta, skús sa pozrieť na toto Grafické programy v Qt 4 – 8 (TCP klient) Celý tento seriál o QT je kvalitka a naučíš sa pri tom dosť o C++ a ...
    Pokecajte si s umelou stupiditou na http://www.kernelultras.org/

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.