Почему «SHOW PROCESSLIST» не дает Host IP? - PullRequest
1 голос
/ 22 февраля 2011

Я выполняю «SHOW PROCESSLIST» в клиентском приложении.

выдает результат: enter image description here

Когда я смотрю на столбец Host, он отображается в одной из строк как «WIN»-R2VUKMIS1PR: 54822 "

Как узнать, что IP-адрес хоста" WIN-R2VUKMIS1PR: 54822 "...

Я пишу программу переменного тока, которая выполняет" SHOW PROCESSLIST "иотображает вывод всех подключенных хостов.

Так как мне разрешить имя хоста в IP?Я попытался использовать

Вот демонстрационное приложение, которое я использовал для преобразования "WIN-R2VUKMIS1PR: 54822" в IP:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[ ]) {
    struct hostent *h;

    /* error check the command line */
    if(argc != 2) {
        fprintf(stderr, "Usage: %s hostname\n", argv[0]);
        exit(1);
    }

    /* get the host info */
    if((h=gethostbyname(argv[1])) == NULL) {
        herror("gethostbyname(): ");
        exit(1);
    }
    else {
        printf("Hostname: %s\n", h->h_name);
        printf("IP Address: %s\n", inet_ntoa(*((struct in_addr *)h->h_addr)));}

    return 0;
}

Я что-то упустил?: -)

1 Ответ

2 голосов
/ 22 февраля 2011

Вы можете использовать gethostbyname_r - найти запись базы данных сетевого хоста, соответствующую имени хоста. Но обратите внимание, это устарело. Так что будьте осторожны, если ваше приложение будет запущено.

Кроме того, я не уверен, может ли это помочь вам.

...