Използване на Unix сокети

#include<sys/types.h>
#include<sys/socket.h>

int socket(int domain, int type, int protocol);
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
  • socket() създава крайна точка за комуникация и връща дескриптор на файла, който се отнася до тази крайна точка.

    • домейнът (Термин на Английски език: domain) определя семейството протоколи, което ще се използва: AF_UNIX, AF_LOCAL, AF_INET.

    • Тип (Термин на Английски език: type) определя комуникационната семантика: SOCK_STREAM или SOCK_DGRAM.

  • Когато се създава сокет със socket(), то той съществува в именованото пространство (адресното пространство), но няма зададен адрес.

  • bind() присвоява адреса, посочен в addr, на сокета, посочен от файловият дескриптор sockfd върнат от метода socket().

  • sockaddr има следната структура:

struct sockaddr {
   sa_family_t sa_family;
   char sa_data[14];
}

Last updated