| 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  | 
  |