Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Zak
Зарегистрирован: 04.12.2004 Сообщения: 2
|
Добавлено: Сб Дек 04 2004 17:29 Заголовок сообщения: gethostbyname(); |
|
|
Приветствую.предупредю сразу что я ламер,как в С++,так и в программированнии в цeлом....так что если кто-то возьмеца /на что я очень надеюсь/ ,то пожалуйста поясните как для децкого сада....
Ну вобщем от слов к делу.Задумка проста как апельсин.прога должна показывать мой айпи.Усе
Вычитал что для этого используется функция WinAPI gethostbyname();
И тут собсно....тупик
http://www.realcoding.net/article2326.html пишут
"Все мы когда-то начинали программирование в сети с простой операции определения IP адреса, принадлежащему нашему компьютеру. Задав такой вопрос в форуме, мы обычно получали очень короткий ответ: Используй gethostbyname() для "localhost". "
Вот терь вопрос...А как?=)
==
p.S: доков по теме почему то никаких не нашел...может искал плохо |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Вс Дек 05 2004 21:19 Заголовок сообщения: |
|
|
Попробуйте поковыряться с этой программой:
//---
#include <stdio.h>
#include <winsock.h>
#define WINSOCK_VERSION 0x0101
#define HOST_NAME "localhost"
//#define HOST_NAME "home"
//-----
int main(int argc, char* argv[])
{
WSADATA WsaData;
LPHOSTENT lpHostEnt;
int Err;
LPSTR szIPAddr;
unsigned char * * pointer;
int i;
Err = WSAStartup( WINSOCK_VERSION, &WsaData );
if (Err != 0){ // Error
printf("Error of WSAStartup\n");
getchar();
return 0;
}
else {
printf("WSAStartup - Good\n");
lpHostEnt = gethostbyname(HOST_NAME);
if (lpHostEnt == NULL) {
printf("Error of gethostbyname\n");
getchar();
return 0;
}
else {
printf("gethostbyname - Good\n");
// переменная lpHostEnt - указатель на
// struct hostent {
// char FAR * h_name;
// char FAR * FAR * h_aliases;
// short h_addrtype;
// short h_length;
// char FAR * FAR * h_addr_list;
// };
printf("%s\n", lpHostEnt->h_name); // имя компа
printf("%d\n", lpHostEnt->h_addrtype); // addrtype
printf("%d\n", lpHostEnt->h_length); // length
pointer = lpHostEnt->h_addr_list;
while ( (*pointer) != NULL) {
for (i=0;i<4;i++) {
printf("%d ", *( *(pointer)+i )); //
};
printf("\n");
pointer= pointer+1;
}; // End of while
};
Err = WSACleanup();
if (Err != 0){ // Error
printf("Error of WSACleanup\n");
getchar();
return 0;
}
else {
printf("WSACleanup - Good\n");
getchar();
return 0;
};
};
} _________________ Знание принципов компенсирует незнание фактов.
Последний раз редактировалось: Andy_user (Пн Дек 06 2004 12:06), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Zak
Зарегистрирован: 04.12.2004 Сообщения: 2
|
Добавлено: Вс Дек 05 2004 22:10 Заголовок сообщения: |
|
|
thnx a lot |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Пн Дек 06 2004 10:13 Заголовок сообщения: |
|
|
Дополнительно:
http://club.shelek.ru/viewart.php?id=36
---
Кстати, когда я употребил термин "поковыряться", надеюсь, Вы поняли, что программка-пример далека до совершенства и по большому счету не совсем верна. Попробуйте разобраться в конструкции типа "указатель на массив указателей"... _________________ Знание принципов компенсирует незнание фактов. |
|
Вернуться к началу |
|
|
|