ВУЗ:
Составители:
51
p_aliases альтернативные имена протокола;
p_propo номер протокола.
struct protoent * getprotobyname (const char *NAME)
Возвращает информацию о протоколе, задаваемом именем NAME.
struct protoent * getprotobynumber (int PROTOCOL)
Возвращает информацию о протоколе, задаваемом номером протокола
PROTOCOL.
void setprotoent (int STAYOPEN)
Открывает базу данных протокола для сканирования. Если STAYOPEN не
равно нулю, вызовы функций getprotobyname и getprotobynumber не закрывают базу
данных.
struct protoent * getprotoent (void)
Возвращает следующую запись из базы данных протоколов. Если предыдущая
запись была последней, возвращается нулевой указатель.
void endprotoent (void)
Закрывает базу данных протоколов.
Приведем пример создания гнезда в пространстве имен интернет.
int make_socket (uint16_t port)
{
int sock;
struct sockaddr_in name;
/* Create the socket. */
sock = socket (PF_INET, SOCK_STREAM, 0);
if (sock < 0)
{
perror ("socket");
exit (EXIT_FAILURE);
}
/* Give the socket a name. */
name.sin_family = AF_INET;
name.sin_port = htons (port);
name.sin_addr.s_addr = htonl (INADDR_ANY);
if (bind (sock, (struct sockaddr *) &name,
sizeof (name)) < 0)
{
perror ("bind");
exit (EXIT_FAILURE);
}
return sock;
}
Создание гнезда
Функции работы с гнездами определены в заголовочном файле <sys/socket.h>.
int socket (int NAMESPACE, int STYLE, int PROTOCOL)
Функция создает гнездо, используя стиль взаимодействия STYLE, пространство
имен NAMESPACE и протокол PROTOCOL. Значение протокола может быть равно
нулю, в этом случае используется значение по умолчанию. Возвращается дескриптор
файла для создаваемого гнезда, если функция выполнилась успешно и -1 - в случае
ошибки. переменная errno может принимать следующие значения:
EPROTONOSUPPORT протокол или способ взаимодействия не поддерживаются
пространством имен;
EMFILE процесс имеет слишком много дескрипторов открытых
файлов;
p_aliases альтернативные имена протокола; p_propo номер протокола. struct protoent * getprotobyname (const char *NAME) Возвращает информацию о протоколе, задаваемом именем NAME. struct protoent * getprotobynumber (int PROTOCOL) Возвращает информацию о протоколе, задаваемом номером протокола PROTOCOL. void setprotoent (int STAYOPEN) Открывает базу данных протокола для сканирования. Если STAYOPEN не равно нулю, вызовы функций getprotobyname и getprotobynumber не закрывают базу данных. struct protoent * getprotoent (void) Возвращает следующую запись из базы данных протоколов. Если предыдущая запись была последней, возвращается нулевой указатель. void endprotoent (void) Закрывает базу данных протоколов. Приведем пример создания гнезда в пространстве имен интернет. int make_socket (uint16_t port) { int sock; struct sockaddr_in name; /* Create the socket. */ sock = socket (PF_INET, SOCK_STREAM, 0); if (sock < 0) { perror ("socket"); exit (EXIT_FAILURE); } /* Give the socket a name. */ name.sin_family = AF_INET; name.sin_port = htons (port); name.sin_addr.s_addr = htonl (INADDR_ANY); if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0) { perror ("bind"); exit (EXIT_FAILURE); } return sock; } Создание гнезда Функции работы с гнездами определены в заголовочном файле. int socket (int NAMESPACE, int STYLE, int PROTOCOL) Функция создает гнездо, используя стиль взаимодействия STYLE, пространство имен NAMESPACE и протокол PROTOCOL. Значение протокола может быть равно нулю, в этом случае используется значение по умолчанию. Возвращается дескриптор файла для создаваемого гнезда, если функция выполнилась успешно и -1 - в случае ошибки. переменная errno может принимать следующие значения: EPROTONOSUPPORT протокол или способ взаимодействия не поддерживаются пространством имен; EMFILE процесс имеет слишком много дескрипторов открытых файлов; 51
Страницы
- « первая
- ‹ предыдущая
- …
- 49
- 50
- 51
- 52
- 53
- …
- следующая ›
- последняя »