Хранение IP в Windows 98
От: Dj Supreme Россия  
Дата: 23.11.01 09:35
Оценка:
Как можно с помощью функций C/C++ добраться до IP адреса машины, на которой запускается программа?
Re: Хранение IP в Windows 98
От: Alex Fedotov США  
Дата: 23.11.01 09:45
Оценка:
Здравствуйте Dj Supreme, Вы писали:

DS>Как можно с помощью функций C/C++ добраться до IP адреса машины, на которой запускается программа?


Если вопрос звучит так, то

gethostname -> gethostbyname.

На самом деле IP адрес назначается не компьютерам, а сетевым интерфейсам, но поскольку ты про это не спросил, то я и отвечать не буду.
-- Alex Fedotov
Re[2]: Хранение IP в Windows 98
От: Dj Supreme Россия  
Дата: 23.11.01 09:50
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Здравствуйте Dj Supreme, Вы писали:


DS>>Как можно с помощью функций C/C++ добраться до IP адреса машины, на которой запускается программа?


AF>Если вопрос звучит так, то


AF>gethostname -> gethostbyname.


AF>На самом деле IP адрес назначается не компьютерам, а сетевым интерфейсам, но поскольку ты про это не спросил, то я и отвечать не буду.


А что там насчет сетевых интерфейсов?
Re[3]: Хранение IP в Windows 98
От: Alex Fedotov США  
Дата: 23.11.01 10:03
Оценка:
Здравствуйте Dj Supreme, Вы писали:

DS>А что там насчет сетевых интерфейсов?


Просто в компьютере может быть несколько сетевых интерфейсов, и каждый из них может иметь свой собственный IP. Например, если в компьютере есть сетевая карта и модем, то для сетевой карты может быть свой IP, а для модема — свой. Хотя gethostbyname и возвращает адреса для всех интерфейсов (hostent.h_addr_list), но узнать какой IP сооветствует какому интерфейсу с ее помощью нельзя.

Вот и все.
-- Alex Fedotov
Re: Хранение IP в Windows 98
От: adontz Грузия http://adontz.wordpress.com/
Дата: 23.11.01 10:35
Оценка:
Здравствуйте Dj Supreme, Вы писали:

DS>Как можно с помощью функций C/C++ добраться до IP адреса машины, на которой запускается программа?


PlatformSDK->NetWorking and Directory Services->Web Network Services->Internet Protocol Helper->About IP helper

Смотри функции GetAdaptersInfo, GetIpAddrTable
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Хранение IP в Windows 98
От: Gosha Украина  
Дата: 23.11.01 19:01
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Просто в компьютере может быть несколько сетевых интерфейсов, и каждый из них может иметь свой собственный IP. Например, если в компьютере есть сетевая карта и модем, то для сетевой карты может быть свой IP, а для модема — свой. Хотя gethostbyname и возвращает адреса для всех интерфейсов (hostent.h_addr_list), но узнать какой IP сооветствует какому интерфейсу с ее помощью нельзя.

Кстати, мне однажды нужно было перечислить адреса (заполнить комбо, чтобы пользователь выбрал к какому биндиться) и тогда (как и сейчас) я не знал как убрать из этого списка интерфейсы с "модемным приводом" (а точнее все RAS-овские). Вы случайно не знаете как это сделать?
Re[5]: Хранение IP в Windows 98
От: adontz Грузия http://adontz.wordpress.com/
Дата: 23.11.01 22:23
Оценка:
Здравствуйте Gosha, Вы писали:

G>Здравствуйте Alex Fedotov, Вы писали:


AF>>Просто в компьютере может быть несколько сетевых интерфейсов, и каждый из них может иметь свой собственный IP. Например, если в компьютере есть сетевая карта и модем, то для сетевой карты может быть свой IP, а для модема — свой. Хотя gethostbyname и возвращает адреса для всех интерфейсов (hostent.h_addr_list), но узнать какой IP сооветствует какому интерфейсу с ее помощью нельзя.

G>Кстати, мне однажды нужно было перечислить адреса (заполнить комбо, чтобы пользователь выбрал к какому биндиться) и тогда (как и сейчас) я не знал как убрать из этого списка интерфейсы с "модемным приводом" (а точнее все RAS-овские). Вы случайно не знаете как это сделать?
GetNumberOfInterfaces
GetIfEntry
typedef struct _MIB_IFROW {
  WCHAR   wszName[MAX_INTERFACE_NAME_LEN];
  DWORD   dwIndex;    // index of the interface
  DWORD   dwType;     // type of interface  
  DWORD   dwMtu;      // max transmission unit 
  DWORD   dwSpeed;    // speed of the interface   
  DWORD   dwPhysAddrLen;    // length of physical address
  BYTE    bPhysAddr[MAXLEN_PHYSADDR]; // physical address of adapter
  DWORD   dwAdminStatus;    // administrative status
  DWORD   dwOperStatus;     // operational status
  DWORD   dwLastChange;     // last time operational status changed 
  DWORD   dwInOctets;       // octets received
  DWORD   dwInUcastPkts;    // unicast packets received 
  DWORD   dwInNUcastPkts;   // non-unicast packets received 
  DWORD   dwInDiscards;     // received packets discarded 
  DWORD   dwInErrors;       // erroneous packets received 
  DWORD   dwInUnknownProtos;  // unknown protocol packets received 
  DWORD   dwOutOctets;      // octets sent 
  DWORD   dwOutUcastPkts;   // unicast packets sent 
  DWORD   dwOutNUcastPkts;  // non-unicast packets sent 
  DWORD   dwOutDiscards;    // outgoing packets discarded 
  DWORD   dwOutErrors;      // erroneous packets sent 
  DWORD   dwOutQLen;        // output queue length 
  DWORD   dwDescrLen;       // length of bDescr member 
  BYTE    bDescr[MAXLEN_IFDESCR];  // interface description 
} MIB_IFROW,*PMIB_IFROW;



Жалко под 95 не пашет
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Хранение IP в Windows 98
От: Gosha Украина  
Дата: 24.11.01 17:11
Оценка:
Здравствуйте adontz, Вы писали:

AF>>>Просто в компьютере может быть несколько сетевых интерфейсов, и каждый из них может иметь свой собственный IP. Например, если в компьютере есть сетевая карта и модем, то для сетевой карты может быть свой IP, а для модема — свой. Хотя gethostbyname и возвращает адреса для всех интерфейсов (hostent.h_addr_list), но узнать какой IP сооветствует какому интерфейсу с ее помощью нельзя.

G>>Кстати, мне однажды нужно было перечислить адреса (заполнить комбо, чтобы пользователь выбрал к какому биндиться) и тогда (как и сейчас) я не знал как убрать из этого списка интерфейсы с "модемным приводом" (а точнее все RAS-овские). Вы случайно не знаете как это сделать?
A>
A>GetNumberOfInterfaces
A>GetIfEntry
A>typedef struct _MIB_IFROW {
A>  WCHAR   wszName[MAX_INTERFACE_NAME_LEN];
A>  DWORD   dwIndex;    // index of the interface
A>  DWORD   dwType;     // type of interface  
A>  DWORD   dwMtu;      // max transmission unit 
A>  DWORD   dwSpeed;    // speed of the interface   
A>  DWORD   dwPhysAddrLen;    // length of physical address
A>  BYTE    bPhysAddr[MAXLEN_PHYSADDR]; // physical address of adapter
A>  DWORD   dwAdminStatus;    // administrative status
A>  DWORD   dwOperStatus;     // operational status
A>  DWORD   dwLastChange;     // last time operational status changed 
A>  DWORD   dwInOctets;       // octets received
A>  DWORD   dwInUcastPkts;    // unicast packets received 
A>  DWORD   dwInNUcastPkts;   // non-unicast packets received 
A>  DWORD   dwInDiscards;     // received packets discarded 
A>  DWORD   dwInErrors;       // erroneous packets received 
A>  DWORD   dwInUnknownProtos;  // unknown protocol packets received 
A>  DWORD   dwOutOctets;      // octets sent 
A>  DWORD   dwOutUcastPkts;   // unicast packets sent 
A>  DWORD   dwOutNUcastPkts;  // non-unicast packets sent 
A>  DWORD   dwOutDiscards;    // outgoing packets discarded 
A>  DWORD   dwOutErrors;      // erroneous packets sent 
A>  DWORD   dwOutQLen;        // output queue length 
A>  DWORD   dwDescrLen;       // length of bDescr member 
A>  BYTE    bDescr[MAXLEN_IFDESCR];  // interface description 
A>} MIB_IFROW,*PMIB_IFROW;
A>



A>Жалко под 95 не пашет

В МСДН ничего похожего не нашел
структуру нашел в Iprtrmib.h
Наверное это опять WIN2000 only?
Re[7]: Хранение IP в Windows 98
От: adontz Грузия http://adontz.wordpress.com/
Дата: 24.11.01 17:40
Оценка:
Здравствуйте Gosha, Вы писали:


A>>Жалко под 95 не пашет

G>В МСДН ничего похожего не нашел
G>структуру нашел в Iprtrmib.h
G>Наверное это опять WIN2000 only?

98/2K
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.