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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 14
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 1
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 5
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 49
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 18
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 777 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: C sitova aplikace, ztrata tal odpovedi

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

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.