Az ünnepek miatt maradtak el laborok így már nem egyértelmű a számozásuk...
Laborvezetőknek
Az első öt előadás laborkártyái közül válogatva kérdezzük végig a hallgatóságot!
Hallgatóknak
Sosem árt előre készülni a laborra, nálam szereztek így kisbajnokság trófeát. Ha többen is elkészítik, akkor holtversenyben mindannyian megkapják a "trófeákat".
Tematika
Az alábbi témák legtöbbjét próbáljuk lefedni a "6/7" gyakorlaton:
- izzítsuk be a "forkos, socketes, multiplexelt, szemaforos, osztott memóriás" állatorvosi szerverünket, majd beszéljük meg a szerver forrását!
- Beszéljük meg a kliens forrását és módosítsuk úgy, hogy párhuzamosan engedje rá kéréseit a szerverre, páldául így:
int main (int argc, char *argv[]) { int gyermekem_pid; int statusz; for (int i=0; i<4; ++i) if ((gyermekem_pid = fork()) == 0) { kliens(argv[1][0]); } else if (gyermekem_pid > 0) { kliens(argv[1][0]); wait(&statusz); } else { exit(-1); } return 0; exit (EXIT_SUCCESS); }
- Hány klienst enged a szerverre ez az új main?
- Mi történik, ha a zombi_elharito-ban kikommenteled a while (wait (NULL) > 0) várakozást?
- Izzítsuk be az svn-ből az elsoQt könyvtár példáit (Mandelbrot, életjáték, genom monitor, arecibói üzenet)
- Oldjunk meg Qt-s feladatokat: a fenti 4 példába dolgozzunk be billentyű vagy egérkezelést
BN laborján
- Módosítsd a szervert, hogy ne csak a localhostról lehessen elérni (szerver.sin_addr.s_addr = htonl(INADDR_ANY) PP 129)
- Vedd ki a szemaforos védelmet, sikerül elrontani a 42-t? Próbálkozz DOS jellegű támadással is a szerverre távolról, s a localhostról is... ha nagyon nem akar elromlani a 42, akkor alakítsunk a kódon (lásd lent a jól elkülönített kiolvasás/visszaírást), ha kell vegyünk be egy a valódi kiszolgálást szimuláló sleep-et:
int sv = *osztott_memoria_terulet;
++*(osztott_memoria_terulet+1);
if (buffer2[0] == '+')
*osztott_memoria_terulet = sv+1;
else
*osztott_memoria_terulet = sv-1 - Szereld át a Mandelbrot rajzolót, hogy egérrel lehessen nagyítani, N billenytűre pedig az iterációs számot duplázva számoljon: