soclu de programare
- Creați o priză
- Legarea la nume locale
- afiliere
- transfer de date
- închidere priza
- Exemple de funcții pentru stabilirea WWW konnektsii
Creați o priză
Pentru a crea un sistem de socket priză de apel.
Acest apel se bazează pe informațiile pe domeniul de comunicare și tipul de soclu. Pentru a utiliza caracteristicile de Internet, setările trebuie să fie după cum urmează:
- Domeniul de comunicare - AF_INET (protocoale Internet).
- tipul de soclu - SOCK_STREAM; Acest tip oferă o consistentă, fiabilă, axat pe stabilirea fluxului de comunicare cu două sensuri de bytes.
Deasupra priza cu tipul de flux a fost menționat. Scurtă descriere a celorlalte tipuri de prize de mai jos:
- Priza Datagram - suporta un flux bidirecțional de date. Nu este garantat că acest flux va fi o consistentă, de încredere, și că datele nu vor fi duplicate. O caracteristică importantă a soclului este că scrierea datelor limită predeterminată.
- Priza Raw - permite accesul utilizatorului la protocolul de comunicare de bază susținută de soclu abstractizare. Astfel de prize sunt de obicei orientate datagram-.
Funcția socket creează un efect de comunicare și returnează un descriptor de fișier referindu-se la o priză, sau -1 la eroare. Acest descriptor este utilizat în viitor pentru a stabili o conexiune.
Pentru a crea un tip de soclu flux cu protocolul TCP furnizează suport de comunicații, apel funcții soclu trebuie să fie după cum urmează:
Legarea la nume locale
Numele Bindable (nume) este un șir de octeți de lungime variabilă, care este interpretat de protocoalele suportate. Interpretarea poate varia în diferite domenii de comunicare.
afiliere
Pe partea de client conexiunea este stabilită utilizând o funcție standard de conectare:
Conectează-te întoarce 0 dacă apelul a fost de succes. Valoarea Returnarea -1 indică faptul că procesul de comunicare a apărut o eroare. Daca va avea succes, procesul de apel funcție poate fi operat cu un soclu funcții de mâner, folosind citească și să scrie, și închide canalul folosind funcția de închidere.
în cazul în care s este un descriptor socket, iar qlength este numărul maxim de solicitări de a stabili o comunicare care ar putea sta într-o coadă, de așteptare pentru procesarea serverelor; acest număr poate fi limitată de caracteristici ale sistemului.
Când serverul primește o cerere din partea unui client și decide cu privire la stabilirea comunicării, se creează un nou socket și conectează-l la asocierea, echivalent cu „priza de ascultare“. Pentru domeniu de internet înseamnă același număr de port. În acest scop, apelul de sistem accepta:
Priza este asociat client și o priză, care a fost returnat la funcția accepta, sunt folosite pentru a stabili o comunicare între server și client.
transfer de date
Atunci când comunicarea este stabilită prin diferitele funcții pot începe procesul de transfer de date. Atunci când comunicarea este disponibil, utilizatorul poate trimite și primi mesaje utilizând funcțiile de citire și scriere:
Apelurile să trimită și să citească recv practic identice și să scrie, cu excepția faptului că argumentul steaguri adăugat.
Unul sau mai multe steaguri pot fi indicate prin valori nenule, cum ar fi următoarele:
închidere priza
Atunci când modulele care interacționează decide să se oprească trimiterea de date și a închide sesiunea, ei fac schimb o strângere de mână în trei cu segmente conținând un pic set „de la expeditor nu mai sunt date“ (acest bit este, de asemenea, numit bit FIN).
În cazul în care priza nu mai este utilizat, procesul poate închide prin utilizarea adresei aproape E-, numindu-l cu mânerul soclu corespunzător:
În cazul în care datele au fost asociate cu soclu, promițătoare de livrare (de tip flux de soclu), sistemul va încerca să transfere datele. Cu toate acestea, după o perioadă destul de lungă de timp, în cazul în care datele nu este încă livrat, acestea vor fi eliminate. În cazul în care utilizatorul dorește să pună capăt procesului orice date, poate face acest lucru prin apelarea shutdown la acest soclu pentru ao închide. oprire de apel este „instantanee“ respingerea tuturor provocărilor din coada de date. apelați următorul format:
în cazul în care modul în care o face una dintre următoarele valori:
Exemple de funcții pentru stabilirea WWW konnektsii