Crearea unui soclu. Priza de apel de sistem ()
Când creați un socket este necesar să se precizeze cu exactitate tipul său. Această specificație este realizată folosind trei apel socket parametri (). Primul parametru indică familia de protocoale create soclu referă. iar al doilea și al treilea parametru determină protocolul specific într-o anumită familie.
Al doilea parametru este utilizat pentru a specifica tipul de interfață la mufa - acesta este un soclu flux. soclu pentru a lucra cu datagrame sau orice alta. Al treilea parametru specifică protocolul pentru tipul de interfață specificat. Protocolul de stiva TCP / IP, există doar un singur protocol pentru prize de streaming - TCP și numai un singur protocol pentru prize datagram - UDP. astfel încât să transporte protocoale TCP / IP al treilea parametru este ignorat.
În alte stive de protocol pot fi mai multe protocoale cu același tip de interfață, de exemplu, datagramei, care diferă de gradul de fiabilitate.
Pentru protocoalele de transport TCP / IP, suntem întotdeauna primul parametru va indica o AF_INET predefinită constantă (de familie Adresa - Internet), sau PF_INET sinonimul său (familie Protocol - Internet).
A doua opțiune ar fi să ia o valoare predeterminată SOCK_STREAM pentru un socket stream și SOCK_DGRAM - pentru datagrama.
Ca oa treia opțiune, în acest caz, nu este inclus în ea, vom pune o valoare de la 0.
apel de sistem pentru a crea un socket
Prototip apel sistem
Descriere syscall
apel sistem socket este utilizat pentru a crea un nod de comunicații virtuale în sistemul de operare. Această descriere nu este o descriere completă a apelului sistem, dar este destinat numai utilizării în curs. Pentru detalii complete, consultați Manual de UNIX.
parametru de domeniu specifică familia de protocol, în care vor fi transmise informațiile. Considerăm că doar două astfel de familii mai multor celor existente. Pentru ei, sunt valorile parametrilor definite pre:
- PF_INET - familia de protocoale TCP / IP;
- PF_UNIX - pentru UNIX protocoale interne de familie, altfel cunoscut ca un alt domeniu UNIX.
Parametrul de tip definește semantica schimbului de informații: dacă să comunice prin mesaje (datagrame), prin stabilirea unei conexiuni virtuale sau chiar și în nici un fel. Vom folosi doar două moduri de a comunica cu o valoare predeterminată pentru un tip de parametru:
- SOCK_STREAM - pentru comunicarea prin stabilirea unei conexiuni virtuale;
- SOCK_DGRAM - să facă schimb de informații prin mesaje.
Parametrul de protocol specifică un protocol specific pentru familia selectată de protocoale și metode pentru a partaja informații. Ea are valoare numai atunci când există mai multe astfel de protocoale. În acest caz, o familie de protocoale și tipul de protocol de schimb de informații este determinat în mod unic. Deci această opțiune, vom presupune egal cu 0.
Primul element al structurii - specifică sin_family familia de protocol. În ea, vom aduce familiar AF_INET constantă predeterminată (cm. Secțiunea anterioară).