Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизПомогите вычитать адрес сетевой платы. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c