joynter |
Отправлено: 04.10.2004, 17:29 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
вот код для определения IP
CODE |
#include <winsock.h>
#include <stdio.h>
........
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(1, 0);
int error;
error = WSAStartup(wVersionRequested, &wsaData);
if(error == 0)
{
char HostName[1024];
struct hostent *adr;
adr = gethostbyname(HostName);
if(adr)
{
char *LocalIp = new char[15];
sprintf(LocalIp,"%d.%d.%d.%d",(unsigned char)adr->h_addr_list[0][0],(unsigned char)adr->h_addr_list[0][1],
(unsigned char)adr->h_addr_list[0][2],(unsigned char)adr->h_addr_list[0][3]);
Label1->Caption = LocalIp;
}
}
|
объясните пожалуйста такую вещь:
изначально HostName = NULL, но после того как выполнилась команда
CODE | error = WSAStartup(wVersionRequested, &wsaData); |
HostName = ......any_value.
откуда такая беда — не понимаю? |
|
AVC |
Отправлено: 05.10.2004, 09:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Не понял вопроса.
HostName определен ПОСЛЕ вызова WSAStartup
Как он может быть чему-то равен перед вызовом?
PS. WSACleanup не забыт? |
|
joynter |
Отправлено: 05.10.2004, 10:21 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
вопрос даже проще, чем был вчера поставлен:
почему после выполнения
CODE | WSAStartup(wVersionRequested, &wsaData); |
любая char-переменная получает какое-то значение?
зы т.е. выполнять код нужно в пошаговом режиме
зызы вышеприведенный код писал не я. я только пытаюсь разобраться как он работает
Отредактировано joynter — 05/10/2004, 11:39 |
|