Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6308
Последний выпуск: 19.06.2015

IP/MAC

Аноним
Имеется локальная сеть на NT.4
я в ней(win98)-пользователь
вопрос,как средствами API/VC.6 получить MAC
адреса соседей, IP уже есть,(хотя бы последовательность действий), ну и поскольку
я первая здесь, удачи Вам
Аноним
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-06-07 1437, Anonymous wrote
Имеется локальная сеть на NT.4
я в ней(win98)-пользователь
вопрос,как средствами API/VC.6 получить MAC
адреса соседей, IP уже есть,(хотя бы последовательность действий), ну и поскольку
я первая здесь, удачи Вам
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
42)-------------------------------------------------------------------
Q> Как узнать MAC адрес сетевой карты?
A>

Вариант1

From Sergey Gazimagomedov 2453/11.13

Мне нужен был МАС адpес, так я его получал, пользуясь NetBIOS.
Добавляешь имя NetBIOS и посылаешь на имя станции, нужной для опpеделения(можно и своей) датагpамный пакет с заполненным NCB.
Вот исходник моей функции для опpеделения МАС адpеса.

UCHAR MYLIBAPI GetAdapterID(char *Name, // NetBIOS имя станции
UINT lana_num,
CARDID *ID) // 6 байтовый массив
{
UCHAR rc = 0;
UCHAR Status[256];

while( lstrlen(Name) - 15)
lstrcat(Name, &quot; &quot;);

memset(&amp;SNcb, 0, sizeof(NCB));
SNcb.ncb_command = NCBASTAT;
SNcb.ncb_buffer = (LPSTR)Status;
SNcb.ncb_length = 256;
lstrcpy(SNcb.ncb_callname, Name);
SNcb.ncb_lana_num = lana_num;
rc = Netbios( &amp;SNcb );
if(rc ==0){
memcpy(ID, Status, 6);
}
return(SNcb.ncb_cmd_cplt);
}

Это под Win32. Конечно должен быть пpотокол NetBIOS, но он в фоpточках и так
необходим.

Вариант2

From Alexey Grachyov <rook@relex.ru>

#include <windows.h>
#include <winsock.h>
#include <wsipx.h>
#include <wsnwlink.h>
#include <stdio.h>

void main()
{
int iAdapters,iOpt=sizeof(iAdapters),iSize=sizeof(SOCKADDR_IPX);
SOCKET skNum;
SOCKADDR_IPX Addr;
WSADATA Wsa;

if(WSAStartup(0x0101,&amp;Wsa)) return;
if((skNum=socket(AF_IPX,SOCK_DGRAM,NSPROTO_IPX))!=INVALID_SOCKET)
{
memset(&amp;Addr,0,sizeof(Addr));
Addr.sa_family=AF_IPX;
if(bind(skNum,(SOCKADDR *)&amp;Addr,iSize)!=SOCKET_ERROR)
{
if(getsockopt(skNum,NSPROTO_IPX,IPX_MAX_ADAPTER_NUM,
(char *)&amp;iAdapters,&amp;iOpt)!=SOCKET_ERROR)
{
while(iAdapters)
{
IPX_ADDRESS_DATA Data;
memset(&amp;Data,0,sizeof(Data));
Data.adapternum=iAdapters-1;
iOpt=sizeof(Data);
if(getsockopt(skNum,NSPROTO_IPX,IPX_ADDRESS,(char
*)&amp;Data,&amp;iOpt)!=SOCKET_ERROR)
{
printf(&quot;Addr %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n&quot;,
(int)Data.netnum[0],(int)Data.netnum[1],(int)Data.netnum[2],
(int)Data.netnum[3],(int)Data.netnum[4],(int)Data.netnum[5],
(int)Data.netnum[6],(int)Data.netnum[7],(int)Data.netnum[8],
(int)Data.netnum[9]);
}
iAdapters--;
}
}
}
closesocket(skNum);
}
WSACleanup();
}

Вариант3

From MSDN

#include <windows.h>
#include <wincon.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;

ASTAT Adapter;

void main (void)
{
NCB Ncb;
UCHAR uRetCode;
char NetName[50];

memset( &amp;Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = 0;

uRetCode = Netbios( &amp;Ncb );
printf( &quot;The NCBRESET return code is 0x%x \n&quot;, uRetCode );

memset( &amp;Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = 0;

strcpy( Ncb.ncb_callname, &quot;* &quot; );
Ncb.ncb_buffer = (char *) &amp;Adapter;
Ncb.ncb_length = sizeof(Adapter);

uRetCode = Netbios( &amp;Ncb );
printf( &quot;The NCBASTAT return code is 0x%x \n&quot;, uRetCode );
if ( uRetCode == 0 )
{
printf( &quot;The Ethernet Number is %02x%02x%02x%02x%02x%02x\n&quot;,
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5] );
}
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог