Showip

来源:互联网 发布:windows桌面软件 编辑:程序博客网 时间:2024/06/10 08:08
#include <stdio.h>#include <string.h>#include <netdb.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>int main(int argc, char *argv[]){struct addrinfo hints, *res, *p;int status;char ispstr[INET6_ADDRSTRLEN];if (argc != 2) {fprintf(stderr, "usage: showip hostname\n");return 1;}memset(&hints, 0, sizeof(hints));hints.ai_family = AF_UNSPEC;hints.ai_socktype = SOCK_STREAM;if ((status = getaddrinfo(argv[1], NULL, &hints, &res)) != 0) {fprintf(stderr, "getaddinfo: %s\n", gai_strerror(status));return 2;}printf("Ip address for %s:\n", argv[1]);for (p = res; p != NULL; p++) {void *addr;char *ipver;if (p->ai_family == AF_INET) {struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr; addr = &(ipv4->sin_addr);ipver = "IPv4";}else {struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr;addr = &(ipv6->sin6_addr);ipver = "IPv6";}inet_ntop(AF_INET, addr, ispstr, INET6_ADDRSTRLEN);printf("The address: %s: %s\n", ipver, ispstr);}freeaddrinfo(res);return 0;}