LINUX.ORG.RU

Как получить свой IP адрес?


0

0

Добрый день. Имею локальный IP "192.168.1.5", хочу его получить.
Пишу следующий код:

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <fcntl.h>


int main(int argc, char **argv)
{
    int sd;
    struct sockaddr_in server;
    struct hostent *hp;
    char hostname[256];
    char hostip[16];

    sd = socket(AF_INET,SOCK_DGRAM,0);

    server.sin_family = AF_INET;

    gethostname(hostname, sizeof(hostname));

    hp = gethostbyname("elzhov");
    bcopy(hp->h_addr_list[0], &(server.sin_addr.s_addr), hp->h_length);
    inet_ntop(AF_INET, &server, hostip, sizeof(hostip));

    printf("%s\n", hostip);

    return 0;
}

Выдает "2.0.0.0". Если задаю имя не своего компьютера, а, например, www.msu.ru
- получаю то же самое. Если задаю имя, которое не резолвится - падает с
SegFault.

Как мне получить на вывод "192.168.1.5"?
Спасибо!

> hp = gethostbyname("elzhov");

Здесь имеется в виду gethostbyname(hostname), hostname выше берется.

murla
() автор топика

а нафига sd = socket(AF_INET,SOCK_DGRAM,0);

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.