Unix Socket - Резюме
Вот список всех функций, связанных с программированием сокетов.
Порт и сервисные функции
Unix предоставляет следующие функции для получения имени службы из файла / etc / services.
struct servent *getservbyname(char *name, char *proto) - Этот вызов принимает имя службы и имя протокола и возвращает соответствующий номер порта для этой службы.
struct servent *getservbyport(int port, char *proto) - Этот вызов принимает номер порта и имя протокола и возвращает соответствующее имя службы.
Функции упорядочивания байтов
unsigned short htons (unsigned short hostshort) - Эта функция преобразует 16-битные (2-байтовые) величины из байтового порядка хоста в сетевой порядок байтов.
unsigned long htonl (unsigned long hostlong) - Эта функция преобразует 32-битные (4-байтовые) величины из байтового порядка хоста в сетевой порядок байтов.
unsigned short ntohs (unsigned short netshort) - Эта функция преобразует 16-битные (2-байтовые) величины из сетевого порядка байтов в порядок байтов хоста.
unsigned long ntohl (unsigned long netlong) - Эта функция преобразует 32-битные величины из сетевого порядка байтов в порядок байтов хоста.
Функции IP-адреса
int inet_aton (const char *strptr, struct in_addr *addrptr)- Этот вызов функции преобразует указанную строку в стандартной точечной нотации Интернета в сетевой адрес и сохраняет адрес в предоставленной структуре. Преобразованный адрес будет в сетевом порядке байтов (байты отсортированы слева направо). Он возвращает 1, если строка действительна, и 0 в случае ошибки.
in_addr_t inet_addr (const char *strptr)- Этот вызов функции преобразует указанную строку в стандартной точечной нотации Интернета в целочисленное значение, подходящее для использования в качестве адреса Интернета. Преобразованный адрес будет в сетевом порядке байтов (байты отсортированы слева направо). Он возвращает 32-битный двоичный сетевой IPv4-адрес, упорядоченный по байтам, и INADDR_NONE в случае ошибки.
char *inet_ntoa (struct in_addr inaddr) - Этот вызов функции преобразует указанный адрес Интернет-узла в строку в стандартной точечной нотации Интернета.
Основные функции сокета
int socket (int family, int type, int protocol) - Этот вызов возвращает дескриптор сокета, который вы можете использовать в последующих системных вызовах, или выдает -1 в случае ошибки.
int connect (int sockfd, struct sockaddr *serv_addr, int addrlen)- Функция подключения используется TCP-клиентом для установления соединения с TCP-сервером. Этот вызов возвращает 0, если он успешно соединяется с сервером, в противном случае он возвращает -1.
int bind(int sockfd, struct sockaddr *my_addr,int addrlen)- Функция привязки назначает сокету адрес локального протокола. Этот вызов возвращает 0, если он успешно привязывается к адресу, в противном случае возвращает -1.
int listen(int sockfd, int backlog)- Функция прослушивания вызывается только TCP-сервером для прослушивания запроса клиента. Этот вызов возвращает 0 в случае успеха, иначе он возвращает -1.
int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)- Функция accept вызывается TCP-сервером для приема клиентских запросов и установления фактического соединения. Этот вызов возвращает неотрицательный дескриптор в случае успеха, иначе он возвращает -1.
int send(int sockfd, const void *msg, int len, int flags)- Функция отправки используется для отправки данных через сокеты потоков или сокеты датаграмм CONNECTED. Этот вызов возвращает количество отправленных байтов, в противном случае он возвращает -1.
int recv (int sockfd, void *buf, int len, unsigned int flags)- Функция recv используется для приема данных через сокеты потоков или сокеты датаграмм CONNECTED. Этот вызов возвращает количество байтов, прочитанных в буфер, в противном случае он возвращает -1 в случае ошибки.
int sendto (int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)- Функция sendto используется для отправки данных через НЕПОДКЛЮЧЕННЫЕ сокеты дейтаграмм. Этот вызов возвращает количество отправленных байтов, в противном случае он возвращает -1 в случае ошибки.
int recvfrom (int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen)- Функция recvfrom используется для получения данных из НЕ ПОДКЛЮЧЕННЫХ сокетов дейтаграмм. Этот вызов возвращает количество байтов, прочитанных в буфер, в противном случае он возвращает -1 в случае ошибки.
int close (int sockfd)- Функция закрытия используется для закрытия связи между клиентом и сервером. Этот вызов возвращает 0 в случае успеха, иначе он возвращает -1.
int shutdown (int sockfd, int how)- Функция выключения используется для корректного закрытия связи между клиентом и сервером. Эта функция дает больше контроля по сравнению с функцией закрытия. В случае успеха возвращается 0, в противном случае - -1.
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) - Эта функция используется для чтения или записи нескольких сокетов.
Функции Socket Helper
int write (int fildes, const void *buf, int nbyte)- Функция записи пытается записать n байтов из буфера, на который указывает buf, в файл, связанный с дескриптором открытого файла, fildes. После успешного завершения write () возвращает количество байтов, фактически записанных в файл, связанный с fildes. Это число никогда не превышает n байтов. В противном случае возвращается -1.
int read (int fildes, const void *buf, int nbyte)- Функция чтения пытается прочитать n байтов из файла, связанного с дескриптором открытого файла, fildes, в буфер, на который указывает buf. После успешного завершения write () возвращает количество байтов, фактически записанных в файл, связанный с fildes. Это число никогда не превышает n байтов. В противном случае возвращается -1.
int fork (void)- Функция fork создает новый процесс. Новый процесс, называемый дочерним процессом, будет точной копией вызывающего процесса (родительский процесс).
void bzero (void *s, int nbyte)- Функция bzero помещает n байт нулевых байтов в строку s. Эта функция будет использоваться для установки всех структур сокетов с нулевыми значениями.
int bcmp (const void *s1, const void *s2, int nbyte)- Функция bcmp сравнивает байтовую строку s1 с байтовой строкой s2. Предполагается, что обе строки имеют длину n байтов.
void bcopy (const void *s1, void *s2, int nbyte)- Функция bcopy копирует n байтов из строки s1 в строку s2. Перекрывающиеся строки обрабатываются правильно.
void *memset(void *s, int c, int nbyte) - Функция memset также используется для установки структурных переменных таким же образом, как и bzero.