Bonjour,

J'ai une application Client-Serveur. Je n'ai que les sources Delphi de l'application Serveur.

L'application serveur (sous Windows) communique avec des applications client (PDA sous Windows CE) SUR UN RESEAU LOCAL via les Sockets Windows en mode TCP/IP.


J'ai besoin d'identifier le matériel du client, idéalement ce serait de récupérer son Adresse MAC qui est unique.

Comment puis-je faire cela ?

J'obtiens son adresse IP comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
var
  SockAddrIn : TSockAddrIn;
  Size       : Integer;
  AdresseIP  : string;
begin
  getpeername(Ident, SockAddrIn, Size);
  ShowMessage( inet_ntoa(SockAddrIn.sin_addr) );
end;
J'ai essayé d'obtenir le nom de la machine mais ça ne fonctionne pas (pointeur HostEnt = nil) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  SockAddrIn : TSockAddrIn;
  Size       : Integer;
  AdresseIP  : string;
  HostEnt: PHostEnt;
begin
  getpeername(Ident, SockAddrIn, Size);
  HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    Showmessage( StrPas(Hostent^.h_name) )
  else
    Showmessage('');
end;

Savez-vous comment je peux faire ? Merci beaucoup !