3 #include <sys/socket.h>
4 #include <netinet/in.h>
9 #include "1stclass.hpp"
10 string firstclass::host2ip(const string server_str){
13 safe_strcat(server, server_str.c_str());
15 #include "lib1stclass.h"
16 int host2ip(const char *server, char *ip){
19 struct addrinfo hint, *res, *p;
21 char ipstr[INET6_ADDRSTRLEN];
23 memset(&hint, 0, sizeof(hint));
24 hint.ai_family = PF_INET;
25 hint.ai_socktype = SOCK_STREAM;
27 error = getaddrinfo(server, "http", &hint, &res);
30 fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(error));
39 for(p = res;p != NULL; p = p->ai_next) {
43 if (p->ai_family == AF_INET) { // IPv4
44 struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr;
45 addr = &(ipv4->sin_addr);
48 struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr;
49 addr = &(ipv6->sin6_addr);
53 // convert the IP to a string and print it:
54 inet_ntop(p->ai_family, addr, ipstr, sizeof ipstr);
56 freeaddrinfo(res); // free the linked list
59 firstclass::safe_strcat(ip, ipstr);
63 safe_strcat(ip, ipstr);