Reguli pentru conexiunea client/server:
-
clientul trebuie să se conecteze în mod explicit la server înainte de a transmite sau primi date
-
clientul nu va accepta connect() până când serverul nu acceptă clientul
-
serverul trebuie să accepte în mod explicit clientul înainte de a transmite sau primi date
-
serverul va aştepta cu accept() până la connect() a clientului.
În cazul serviciului cu conexiune orientată, serviciul de transport de bază este sigur.
Conexiunea client-to-server: connect()
Clientul foloseşte connect() pentru a solicita conexiunea la server şi comunicarea via socket
Protocolul de transport de bază (de ex. TCP) începe protocolul de setare a conexiunii implementând regulile client/server
connect() se returnează când serverul acceptă explicit conexiunea, sau în caz de pauză (nu există niciun răspuns de la server).
Se foloseşte de obicei cu protocoalele de transport sigure, dar şi cu datagrame.
int connect ( int sockfd, struct sockaddr *toaddrptr, int addresslen)
-
sockfd: variabila desemnată socket() returnează valoare. Procesul acceptă conexiuni care sosesc pe acest socket id.
-
*toaddrptr este structura adresei lui sockaddr_in care păstrează informaţii despre adresa serverului. Este nevoie de alocarea dreptului necesqar pentru a tipari sockaddr.
-
addresslen este dimensiunea structurii adresei.
Apelul de sistem listen()
Folosit de către server cu conexiune orientată.
Permite SO/reţelei să afle dacă serverul va accepta solicitarea de conexiune.
Nu blochează şi aşteaptă solicitarea!
int listen ( int sockfd, int maxwaiting)
sockfd: valoare de retur asignată variabil lui socket(). Procesul acceptă conexiuni sosind pe acest socket id.
maxwaiting:numărul maxim de solicitări de conexiune care poate fi pus în aşteptare pentru ca serverul sa dea un accept(). Valoarea tipică este 5.
Lasă un răspuns