Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2010, 22:57   #1
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию Получить MAC адрес устройства, зная его IP

Как можно получить мак адрес устройства в сети, зная его IP адрес?
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 06.02.2010, 23:39   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

через функу Netbios библиотеки netapi32.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.02.2010, 12:50   #3
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

А можно пример ее использования?
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 07.02.2010, 12:58   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

держите...
Вложения
Тип файла: txt mac.pas.txt (3.2 Кб, 370 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.02.2010, 13:21   #5
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Спасибо, но пару вопросов осталось. Например, как вызвать и где там указывается IP адрес? Вместо const Machine: string?
Тяжело разобрать код без комментов вообще.
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 07.02.2010, 14:17   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

>>> тырк

upd
-------

еще вариант...
Код:
uses winsock;

function SendARP(const DestIP, SrcIP: ULONG;
                   pMacAddr: PULONG;
                   var PhyAddrLen: ULONG): DWORD; stdcall; external 'IPHLPAPI.DLL';

implementation

{$R *.dfm}

type TMacAddress = array [1..6] of byte;

function getmac(Value: TMacAddress; Length: DWORD): String;
var i: integer;
begin
 if Length = 0 then Result := '00-00-00-00-00-00' else begin
  Result:= '';
  for i:= 0 to Length - 2 do
   Result:= Result + IntToHex(Value[i], 2) + '-';
  Result:= Result + IntToHex(Value[Length-1], 2)
 end
end;


procedure TForm1.SpeedButton1Click(Sender: TObject);
var DestIP, SrcIP: ULONG;
     pMacAddr: TMacAddress;
     PhyAddrLen: ULONG;
begin
 DestIP:= inet_addr(pchar(edit1.text));
 PhyAddrLen:= 6;
 SendArp(DestIP, 0, @pMacAddr, PhyAddrLen);
 Caption:= getmac(pMacAddr, PhyAddrLen)
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 07.02.2010 в 14:49.
raxp вне форума Ответить с цитированием
Старый 17.02.2010, 22:18   #7
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Возниклы вопросы по рабоет предложенных вариантов.
По первому:
Что значит строка:
Код:
if Word(NetBios(@NCB)) = NRC_GOODRET then
С ней никак не добавляется мак адрес в стринглист, без нее же проходит все, что это за условие?
По второму:
Какие я не пробовал адреса, везде возвращает мак адрес из нулей, из-за чего такое может случиться?
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 17.02.2010, 23:07   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

работают без проблем оба метода... второй быстрее
Изображения
Тип файла: jpg Копировать из новый-2.jpg (14.0 Кб, 352 просмотров)
Вложения
Тип файла: zip getmac.zip (144.7 Кб, 363 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 18.02.2010, 19:15   #9
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

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

Может ли быть это связано что юзаю инет а не локалку?
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 18.02.2010, 20:10   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

очень даже может.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить входящую/исходящую скороть сети/подключения? Зная его имя. TwiX Работа с сетью в Delphi 10 01.04.2010 19:17
Mac адрес компа veniomin Помощь студентам 0 03.05.2009 18:17
mac адрес AvG Компьютерное железо 5 23.07.2008 10:52
MAC адрес удалённого компьютера delphi_beginner Работа с сетью в Delphi 6 22.07.2008 14:57
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39