Documente Academic
Documente Profesional
Documente Cultură
Programarea inretea I
SabinCorneliu Buraga
http://www.infoiasi.ro/~busaco
Modelul client/server
APIpentru programarea inretea
Socketuri BSD
Modelul client/serverTCP
modelul client/server
Osingura masina
Client Client Process Terminal Printer File Memory
Process Process Server Server Server Server Server
Kernel Kernel Kernel Kernel Kernel Kernel Kernel
Similarunui descriptordefisier
AF_LOCAL AF_UNIX
(dinmotiveistorice)
uint16_t htons(uint16_t);
uint16_t ntohs(uint_16_t);
uint32_t htonl(uint32_t);
uint32_t ntohl(uint32_t);
Dr. Sabin-Corneliu Buraga www.infoiasi.ro/~busaco/
Socketuri
Pentru IPv6,sefoloseste sockaddr_in6
struct sockaddr_in {
u_int16_t sin6_family; /* AF_INET6 */
u_int16_t sin6_port;
u_int32_t sin6_flowinfo;
u_int32_t sin6_scope_id;
struct in6_addr sin6_addr;
};
struct in6_addr {
unsigned char s6_addr[16];
};
Dr. Sabin-Corneliu Buraga www.infoiasi.ro/~busaco/
Socketuri|asignareauneiadrese
Asignareauneiadreselaunsocket existent
serealizeazacubind()
int bind ( int sockfd,
const struct sockaddr *myaddr,
const! int addrlen );
Observatii:
Pentru IPv6inlocul constantei INADDR_ANY
seva folosi vezi antetul netinet/in.h:
serv.sin6.addr = in6addr_any;
Functiile deconversie pentru IPv6sunt:
inet_pton()
inet_ntop()
Erori:
EPIPE scrierelaunsocket neconectat
EWOULDBLOCK nusepotacceptadate
farablocare,insaoperatiuneaestesetata
cafiindneblocanta
Tosucceedinrelationships
youneedtoestablishyourownidentity.
youneedtobeopen&accepting.
youneedtoestablishcontacts.
youneedtotakethingsastheycome,notas
youexpectthem.
youneedtohandleproblemsastheyarise.