Lucrarea de laborator nr. 1
Primitiva socket()

Pentru problemele urmatoare se cere implementare C++, la alegere, in Linux sau Windows. Programele trebuie sa fie portabile (sa nu trebuiasca modificata sursa daca se trece pe un sistem cu intregii de alta lungime sau daca se trece pe o masina de tip big-endian.

Atentie! Se cere rezolvarea tuturor problemelor din set.

Pentru testare se pot folosi in Linux comenzile nc (net cat), hexdump si hexedit, precum si implementarile compatibile furnizate (vezi link-urile mai jos).


1. Se cere o pereche de programe care sa comunice prin socket de tip SOCK_STREAM. Emitatorul va trimite o secventa de numere intregi citite dintr-un fisier. Receptorul va scrie intr-un fisier numerele pare.

Numerele vor fi reprezentate, atat in fisiere cat si pe conexiune, ca text, prin cifrele lor in baza 10 date ca si caractere ASCII. Numerele pot fi separate prin oricate caractere albe (spatiu, tab, carriage return sau line feed).

Resurse:


2. Se cere o pereche de programe, care sa comunice prin socket de tip SOCK_STREAM. Unul din procese va trimite o secventa de siruri de caractere; acestea vor fi citite dintr-un fisier si vor avea lungime intre 0 si 10000 de caractere. Receptorul va scrie intr-un fisier primul sir, al treilea, al cincilea s.a.m.d.

In fisier sirurile vor fi separate printr-un caracter newline. Pe conexiune fiecare sir se va transmite astfel: un intreg pe 4 octeti in ordine retea (big endian) reprezentand lungimea sirului, urmat de sirul propriu-zis (fara vreun terminator).

Pentru testare: executabile Linux compatibile cu protocolul descris: send2, recv2


3. Se cere o pereche de procese care sa comunice prin socket de tip SOCK_DGRAM. Unul din procese va trimite perechi de numere intregi, citite dintr-un fisier. Al doilea proces va receptiona perechile si, pentru fiecare pereche, va trimite inapoi numerele si suma lor. Primul proces va scrie sumele intr-un al doilea fisier si va verifica corectitudinea.

Toate numerele se vor reprezenta pe 4 octeti in ordine retea. Datagramele de la primul proces spre al doilea vor fi formate din 8 octeti, reprezentand cele doua numere. Datagramele raspuns vor fi formate din 12 octeti, reprezentand in ordine cele doua numere si suma.

Resurse:


Retele de calculatoare
2007-03-04
Actualizat: 2007-03-08