27.3.4. Функция gethostbyname()
27.3.4. Функция gethostbyname()
Пользователям обычно удобнее указать символьное имя сервера, чем его IP-адрес. Для разрешения имени служит функция gethostbyname(). Вот ее прототип:
#include <netinet/in.h>
#include <netdb.h>
struct hostent *gethostbyname(char *name);
Данная функция возвращает указатель на структуру типа hostent, содержащую следующие поля:
? char *h_name — доменное имя узла;
? char **h_aliases — псевдонимы узла, если таковые определены;
? char *h_addr — IP-адрес узла;
? int h_addrtype — набор используемых протоколов (в нашем случае — AF_INET);
? int h_length — длина адреса узла.
Примеры использования функции:
struct hostent *h;
h = gethostbyname(*argv);
if (h==NULL) {
printf("Невозможно разрешить имя: `%s` ", *argv);
exit(1);
}
// Выводим IP-адрес. Вывод в виде: имя -> адрес
printf("%s -> %s ", *argv,
inet_ntoa(*((struct in_addr *)h->h_addr_list[0])));
Узнать свой собственный адрес можно с помощью функции getsockname():
extern int getsockname(int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __len) __THROW;
Ей нужно передать три параметра — дескриптор сокета, адрес структуры, которая будет содержать информацию о нашем узле (его адрес). Третий параметр будет содержать длину адресной структуры.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пример: использование функций gethostbyname и getservbyname
Пример: использование функций gethostbyname и getservbyname Теперь мы можем изменить код нашего TCP-клиента времени и даты, показанный в листинге 1.1, так, чтобы использовать функции gethostbyname и getservbyname и принимать два аргумента командной строки: имя узла и имя службы. Наша программа
27.3.4. Функция gethostbyname()
27.3.4. Функция gethostbyname() Пользователям обычно удобнее указать символьное имя сервера, чем его IP-адрес. Для разрешения имени служит функция gethostbyname(). Вот ее прототип:#include <netinet/in.h>#include <netdb.h>struct hostent *gethostbyname(char *name);Данная функция возвращает указатель на структуру типа
Функция mq_open
Функция mq_open В листинге 5.17 приведен текст первой части функции mq_open, создающей новую очередь сообщений или открывающей существующую.Листинг 5.17. Функция mq_open: первая часть//my_pxmsg._mmap/mq_open. с1 #include "unpipc.h"2 #include "mqueue.h"3 #include <stdarg.h>4 #define MAX_TRIES 105 struct mymq_attr defattr =6 { 0, 128, 1024, 0
6.4. Функция msgrcv
6.4. Функция msgrcv Сообщение может быть считано из очереди с помощью функции msgrcv.#include <sys/msg.h>ssize_t msgrcv(int msqid, void *ptr, size_t length, long type, int flag);/* Возвращает количество данных в сообщении, –1 – в случае ошибки */Аргумент ptr указывает, куда следует помещать принимаемые данные. Как и для
6.5. Функция msgctl
6.5. Функция msgctl Функция msgctl позволяет управлять очередями сообщений:#include <sys/msg.h>int msgctl(int msqid, int cmd, struct msqid_ds *buff);/* Возвращает 0 в случае успешного завершения, –1 в случае ошибки */Команд (аргумент cmd) может быть три:? IPC_RMID — удаление очереди с идентификатором msqidиз системы.
Функция SUM
Функция SUM Ваши возможности в подведении итогов не ограничены простым подсчетом записей. Используя функцию SUM, можно генерировать итоговые результаты для всех возвращаемых записей по любым числовым полям. Например, для создания запроса, который генерирует итоги по
Функция uni()
Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book
Функция uni()
Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book
Хэш-функция.
Хэш-функция. Еще одно важное преимущество использования PGP состоит в том, что PGP применяет так называемую «хэш-функцию», которая действует таким образом, что в том случае какого-либо изменения информации, пусть даже на один бит, результат «хэш-функции» будет совершенно
Функция uni()
Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book
Хэш-функция
Хэш-функция Однако описанная выше схема имеет ряд существенных недостатков. Она крайне медлительна и производит слишком большой объём данных — по меньшей мере вдвое больше объёма исходной информации. Улучшением такой схемы становится введение в процесс преобразования