Informatika 2 - HTML, CSS - böngészők programozása labor

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 22., 11:55-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Villanyalap|LaborBeugro20080227}} * 1. Egy HTTP kommunikációban milyen felek vesznek részt és mi a feladatuk? Résztvesz egyrészt egy kliens, ak…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


  • 1. Egy HTTP kommunikációban milyen felek vesznek részt és mi a feladatuk?

Résztvesz egyrészt egy kliens, aki lekéréseket (query) küld a szervernek, és egy szerver, aki azokat fogadja és megválaszolja. A szerver a válasz elküldésén kívül még egyéb műveleteket is végrehajthat, pl. egy FORM elküldésekor generálódó POST lekérés hatására módosíthat valamit egy adatbázisban.

  • 2. A HTTP kommunikáció során hogyan állapodnak meg a felek a használandó HTTP protokoll verzióban?

A legnagyobb olyan verziót használják, amit mindkét résztvevő támogat.

  • 3. A HTTP protokollban a kliens hogyan jelzi a kérés fejlécének végét?

Két CR-LF sorozattal (0x0D 0x0A 0x0D 0x0A byteok).

  • 4. A HTTP GET kérés hogyan közli a lekérendő dokumentum nevét és elérhetőségét?

A küldött parancs (pl. GET) után egy szóközzel elválasztva következik a dokumentum helye a szerver gyökérkönyvtárához képest. Pl. a www.google.com szervernek küldött GET / HTTP/1.0 lekérés magát a gyökérkönyvtárat kéri le (perjel).

  • 5. A web szerver hogyan jelzi, ha hiba történt a dokumentum lekérése során?

A válasz tartalmaz egy státuszkódot, ha ennek első számjegye 4-es, az kliensoldali hibát jelent (pl. 404 Not found), ha 5-ös, az szerveroldali hiba (pl. 500 Internal Server Error). A (HTTP 1.1-es) válaszkódok bővebben megtalálhatóak itt: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html

  • 6. A web szerver milyen két módon jelezheti a dokumentum méretét (végét)?

A fejlécben előre elküldheti a méretét (pl. Content-Length fejléc mező), vagy, amikor befejezte az átvitelt, simán bonthatja a kapcsolatot.

  • 7. Írjon C nyelvű kódrészletet, amely megkeresi az str karakter tömbben tárolt szöveg második szavát, és az str2 tömbben visszaadja!
  • 8. Írjon C nyelvű kódrészletet, amely megvizsgálja, hogy az str karakter tömbben tárolt szöveg első szava "GET"-e, és ha igen, akkor a második szavát az str2 tömbben visszaadja!
  • 9. Írjon C nyelvű kódrészletet, amely egy állományt binárisan megnyit, majd bezár! Ha a megnyitás sikertelen, akkor jelezze a hibát!
  • 10. Írjon C nyelvű kódrészletet, amely az str karakter tömbben tárolt szöveget elküldi az s leíróval reprezentált kliens socketen keresztül!


#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>

int main () {

char str[]="GET /index.html HTTP/1.0\x0d\x0a\x0d\x0a";
char str2[20];
char temp[20];
FILE *file;
SOCKET s;
sockaddr_in addr;

/* 7 */

sscanf(str, "%*[^ ] %[^ ]", str2);

/* 8 */

sscanf(str, "%[^ ]", str2);
if (strcmp(str2, "GET")==0) sscanf(str, "%*[^ ] %[^ ]", str2);
else str2[0]='<verbatim></verbatim>';

/* 9 */

file=fopen("temp.bin", "rb");
if (file==NULL) printf("hiba a file megnyitasakor\n");
else fclose(file);

/* 10 */

addr.sin_family = AF_INET; 
addr.sin_addr.s_addr = inet_addr("152.66.28.13"); /* a neptun címe :D */
addr.sin_port = htons(80);

x=connect(s, (struct sockaddr *)addr, sizeof(addr)); 
if (x<0) {
printf("kapcsolodasi hiba\n");
return 1;
}

x=send(s, (const void *)str, strlen(str), 0);			//figyelem!! sizeof() fordítási időben értékelődik ki, ezért a pointer méretét írja be, nem a tömbhosszát
if (x<0) printf("irasi hiba\n");
else printf("%d byte elkuldve\n", x);
closesocket(s);
return 0;
}


-- G - 2008.02.26.

  • Ezen a helyen volt linkelve a(z) WebSzerver.pdf nevű fájl ("WebSzerver.pdf" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Villanyalap/LaborBeugro20080227 oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki
    Hiba a bélyegkép létrehozásakor: Nem lehet a bélyegképet a célhelyre menteni
    @sch.bme.hu címre a kérésedet)
A beugró maga