Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Помогите вычитать адрес сетевой платы.   Найти похожие ветки 

 
Akim2   (2002-09-23 11:11) [0]

На сколько я знаю, у сетевой есть уникальный адрес (номер), кот зашит в BIOS сетевой платы. Подскажите как можно его вычитать.


 
Marcus   (2002-09-23 12:14) [1]

// Пример на С
int iAdapters, iOpt=sizeof(iAdapters),iSize=sizeof(SOCKADDR_IPX);
SOCKET skNum;
SOCKADDR_IPX Addr;
WSADATA Wsa;

if(WSAStartup(0x0101,&Wsa)) return;

if((skNum=socket(AF_IPX,SOCK_DGRAM,NSPROTO_IPX))!=INVALID_SOCKET)
{
memset(&Addr,0,sizeof(Addr));
Addr.sa_family=AF_IPX;
if(bind(skNum,(SOCKADDR *)&Addr,iSize)!=SOCKET_ERROR)
{
if(getsockopt(skNum,NSPROTO_IPX,IPX_MAX_ADAPTER_NUM,
(char *)&iAdapters,&iOpt)!=SOCKET_ERROR)
{
while(iAdapters) {
IPX_ADDRESS_DATA Data;

memset(&Data,0,sizeof(Data));
Data.adapternum=iAdapters-1;
iOpt=sizeof(Data);
if(getsockopt(skNum,NSPROTO_IPX,IPX_ADDRESS,
(char*)&Data,&iOpt)!=SOCKET_ERROR)
{
printf("Addr: %02X%02X%02X%02X:%02X%02X%02X%02X%02X%2X\n",
(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();


 
Kibitzer   (2002-09-23 15:46) [2]

Вот пример на Delphi:
uses ..., Nb30, ...
...
function GetAdapterInfo(Lana: Char): String;
var
Adapter: TAdapterStatus;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBRESET);
NCB.ncb_lana_num := Lana;
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := "mac not found";
Exit;
end;

FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := "*";

FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := "mac not found";
Exit;
end;
Result :=
IntToHex(Byte(Adapter.adapter_address[0]), 2) + "-" +
IntToHex(Byte(Adapter.adapter_address[1]), 2) + "-" +
IntToHex(Byte(Adapter.adapter_address[2]), 2) + "-" +
IntToHex(Byte(Adapter.adapter_address[3]), 2) + "-" +
IntToHex(Byte(Adapter.adapter_address[4]), 2) + "-" +
IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;

function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
Result := GetAdapterInfo(AdapterList.lana[0])
else
Result := "mac not found";
end;


Пример:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=GetMACAddress
end;

:)

Источник: http://www.sources.ru/delphi/delphi_get_mac_address.shtml


 
Akim2   (2002-09-23 19:24) [3]

Сенкс, пошел разбираться



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-8015
SONY
2002-09-21 16:20
2002.10.03
Как загрузить и отмасштабировать JPEGImage в TImage


1-7926
vinni2000
2002-09-23 19:13
2002.10.03
Вопрос по ShellExecute


3-7883
BlackTiger
2002-09-14 10:26
2002.10.03
КАК: Сортировка грида, не трогая источника данных.


14-8142
MAXHO
2002-09-08 23:29
2002.10.03
Нужен учебник по делфи.


3-7842
Nikolai_S
2002-09-12 15:54
2002.10.03
Общий доступ к БД