C - otvorenie suboru z adresy http://

Ing. Miloslav Ponkrác postovni.holub na atlas.cz
Neděle Červenec 30 13:21:29 CEST 2000


>dobry den
>
>prosim vas, ako v C otvorim subor z adresy http://.....
>tak aby som mohol citat ako textovy ??


Pokud to jde takto jednoduše, že se v C rovnou otevře soubor, tak o tom
nevím, třeba mě někdo z konference poučí. (I když třeba v PHP to jde.).

Obyčejně to dělám tak, že použiji sockety a bavím se pomocí socketových
funkcí (connect, bind, apod.). HTTP je protokol, takže je potřeba vytvořit
HTTP požadavek a poté přijmout data, která obsahují nejenom data Vašeho
"souboru", ale i různé hlavičky. Celé to probíhá asi takto:

1) Pomocí funkce socket() určíte síťový protokol (TCP) a tím otevřete
socket.
2) Pomocí bind() určíte svojí IP adresu a port
3) Přeložíte si doménové jméno za http:// na IP adresu.
4) Připojíte se na IP adresu pomocí connect() získanou ve 3) a port 80
(pokud není určeno jinak v http://...:port)
5) Vytvoříte HTTP hlavičku, kde především určíte soubor, který schcete
stáhnout
6) Začnete číst a jako první přečtete HTTP hlavičku odpovědi. V ní zjistíte,
jestli je vůbec soubor k dispozici v kódu chyby. Někdy HTTP server posílá v
odpovědi řádek Location:, který říká, že soubor byl přesunut na jinou
adresu, kde ho máte hledat. V takovém případě jedete znovu od 1) na nově
získanou adresu.
7) Načtete data.
8) Uzavřete spojení.

Možná je na to nějaká šikovná knihovna, ale nevím o ní.

Miloslav Ponkrác




Další informace o konferenci Linux