Здравствуйте Alex Fedotov, Вы писали:
AF>Здравствуйте Dj Supreme, Вы писали:
DS>>Как можно с помощью функций C/C++ добраться до IP адреса машины, на которой запускается программа?
AF>Если вопрос звучит так, то
AF>gethostname -> gethostbyname.
AF>На самом деле IP адрес назначается не компьютерам, а сетевым интерфейсам, но поскольку ты про это не спросил, то я и отвечать не буду.
Здравствуйте Dj Supreme, Вы писали:
DS>А что там насчет сетевых интерфейсов?
Просто в компьютере может быть несколько сетевых интерфейсов, и каждый из них может иметь свой собственный IP. Например, если в компьютере есть сетевая карта и модем, то для сетевой карты может быть свой IP, а для модема — свой. Хотя gethostbyname и возвращает адреса для всех интерфейсов (hostent.h_addr_list), но узнать какой IP сооветствует какому интерфейсу с ее помощью нельзя.
Здравствуйте Alex Fedotov, Вы писали:
AF>Просто в компьютере может быть несколько сетевых интерфейсов, и каждый из них может иметь свой собственный IP. Например, если в компьютере есть сетевая карта и модем, то для сетевой карты может быть свой IP, а для модема — свой. Хотя gethostbyname и возвращает адреса для всех интерфейсов (hostent.h_addr_list), но узнать какой IP сооветствует какому интерфейсу с ее помощью нельзя.
Кстати, мне однажды нужно было перечислить адреса (заполнить комбо, чтобы пользователь выбрал к какому биндиться) и тогда (как и сейчас) я не знал как убрать из этого списка интерфейсы с "модемным приводом" (а точнее все RAS-овские). Вы случайно не знаете как это сделать?
Здравствуйте 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 interfaceDWORD 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;
Здравствуйте 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?