OpenSCADAWiki:
Roman Savochenko
/
C Short All
/
part2
/part22
...
Home
|
Index
|
Changes
|
Comments
|
Users
|
Registration
|
Login
:
Password:
====2.22 Сокеты==== **accept (BSD) <sys/types.h, sys/socket.h>** //int accept(int s, struct sockaddr *addr, socklen_t *addrlen);// Возвращает описатель сокета клиента пославшего запрос на сокет <s> с адресом <addr, addrlen>. **bind (BSD) <sys/types.h, sys/socket.h>** //int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);// Связывает открытый сокет <sockfd> с именем длиной <addrlen> в <my_addr>. **listen (POSIX) <sys/socket.h>** //int listen(int s, int backlog);// Прослушивает соединения на сокете <s> с длиной очереди полностью установленных сокетов <backlog> **recv, recvfrom, recvmsg (BSD) <sys/uio.h sys/types.h sys/socket.h>** //int recv(int s, void *buf, size_t len, int flags);// //int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);// //int recvmsg(int s, struct msghdr *msg, int flags);// Системные вызовы recvfrom и recvmsg используются для получения сообщений из сокета независимо от того, является ли сокет ориентированным на соединения или нет. Вызов recv обычно делается только через соединенный сокет. **send, sendto, sendmsg (BSD, POSIX) <sys/types.h, sys/socket.h>** //int send(int s, const void *msg, size_t len, int flags);// //int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);// //int sendmsg(int s, const struct msghdr *msg, int flags);// send, sendto, и sendmsg используются для пересылки сообщений в другой сокет. send можно использовать, только если сокет находится в состоянии соединения, тогда как sendto и sendmsg можно использовать в любое время. **socket (BSD) <sys/types.h, sys/socket.h>** //int socket(int domain, int type, int protocol);// Возвращает описатель нового сокета <socket>. <domain> - задает домен соединения (Табл.18). <type> - задающий семантику коммуникации (Табл.19). <protocol> - задает конкретный протокол, который работает с сокетом. **shutdown (BSD) <sys/socket.h>** //int shutdown(int s, int how);// Приводит к закрытию всего полнодуплексного соединения или его части в сокете, связанном с описателем <s>. **socketpair (BSD) <sys/types.h, sys/socket.h>** //int socketpair(int d, int type, int protocol, int sv[2]);// Функция создает пару неименнованых связанных сокетов в заданном домене <d> типа <type>, используя заданный протокол <protocol>. Описатели заданных сокетов возвращаются в sv[0] и sv[1]. **gethostbyname (BSD) <sys/socket.h>** //struct hostent *gethostbyname(const char *name);// Возвращает структуру типа hostent машине с именем name. **htonl, htons, ntohl, ntohs (BSD)uint32_t htonl(uint32_t hostlong);** //uint16_t htons(uint16_t hostshort);// //uint32_t ntohl(uint32_t netlong);// //uint16_t ntohs(uint16_t netshort);// Переводят данные из хостового порядка расположения байтов в сетевой и наоборот **inet_pton (BSD) <sys/types.h, sys/socket.h, arpa/inet.h>** //int inet_pton(int af, const char *src, void *dst);// Преобразует строку символов <src> в сетевой адрес (типа <af>), затем копирует полученную структуру с адресом в <dst>. **inet_aton (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //int inet_aton(const char *cp, struct in_addr *inp);// Преобразует обычный вид IP-адреса cp (из номеров и точек) в двоичный код inp. **inet_addr (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //in_addr_t inet_addr(const char *cp);// Преобразует обычный вид IP-адреса cp (из номеров и точек) в двоичный код в сетевом порядке расположения байтов. **inet_network (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //in_addr_t inet_network(const char *cp);// Извлекает сетевой номер в хостовом порядке расположения байтов из адреса cp, записанном в виде номеров и точек. **inet_ntoa (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //char *inet_ntoa(struct in_addr in);// Преобразует IP-адрес in, заданный в сетевом порядке расположения байтов, в стандартный строчный вид, из номеров и точек. **inet_makeaddr (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //struct in_addr inet_makeaddr(int net, int host);// Создает IP-адрес в сетевом порядке расположения байтов, комбинируя номер сети net с локальным адресом host в сети net (оба в хостовом порядке расположения байтов). **inet_lnaof (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //in_addr_t inet_lnaof(struct in_addr in);// Возвращает часть адреса для локального хоста из IP-адреса in. Адрес локального хоста возвращается в хостовом порядке размещения байтов. **inet_netof (BSD) <sys/socket.h, netinet/in.h, arpa/inet.h>** //in_addr_t inet_netof(struct in_addr in);// Возвращает сетевую часть IP-адреса in. Сетевой номер возвращается в виде байтов, порядок которых определяется системой локального хоста. Таблица 18. **Домены соединений** #| ||**Имя**|**Описание**|| ||PF_UNIX, PF_LOCAL|Локальное соединение.|| ||PF_INET|IPv4 протоколы Интернет.|| ||PF_INET6|IPv6 протоколы Интернет.|| ||PF_IPX|IPX - протоколы Novell.|| ||PF_NETLINK|Устройство для взаимодействия с ядром.|| ||PF_X25|Протокол ITU-T X.25 / ISO-8208.|| ||PF_AX25|Протокол AX.25 - любительское радио.|| ||PF_ATMPVC|ATM - доступ к низкоуровневым PVC.|| ||PF_APPLETALK|Appletalk.|| ||PF_PACKET|Низкоуровневый пакетный интерфейс.|| |# Таблица 19. **Типы сокетов** #| ||**Имя**|**Описание**|| ||SOCK_STREAM|Двусторонний, надежных последовательных потоков байтов, с поддержкой соединения. Может также поддерживаться механизм внепоточных данных.|| ||SOCK_DGRAM|Датаграммы (ненадежные сообщения с ограниченной длиной и не поддерживающие соединения).|| ||SOCK_SEQPACKET|Последовательный двусторонний канал для передачи датаграмм с поддержкой соединений.|| ||SOCK_RAW|Обеспечивает доступ к низкоуровневому сетевому протоколу.|| ||SOCK_RDM|Обеспечивает надежную доставку датаграмм без гарантии, что они будут расположены по порядку.|| |#
Please type the word you read in the image: