为什么“SHOW PROCESSLIST”没有给出主机IP?

时间:2011-02-22 13:31:00

标签: c++ mysql c network-programming

我在客户端App上执行“SHOW PROCESSLIST”。

它给出了输出: enter image description here

当我查看主机列时,它在行中显示为“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 个答案:

答案 0 :(得分:2)

您可以使用gethostbyname_r - 查找匹配主机名的网络主机数据库条目。  但请注意,它已被弃用。如果您的应用程序正在上线,请小心。

另外,我不确定它是否对您有帮助。