IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Socket TCP/IP (local) : comment récupérer adrr MAC ?


Sujet :

Langage Delphi

  1. #1
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut Socket TCP/IP (local) : comment récupérer adrr MAC ?
    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 !

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    tu dois retrouver ces adresse par la commande "arp -a"

    et tu peux récupérer cette liste par la fonction GetNetIpTable

    celle-ci est déclarée dans cette unité.

    Si tu connais l'adresse IP mais qu'elle n'est pas dans la table ARP tu peux faire une requête ARP avec la function SendARP déclarée également dans l'unité ci-dessus.

  3. #3
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    Merci, ça fonctionne très bien.

    J'utilise systématiquement la commande SendArp de la Dll Windows iphlpapi.dll

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2006, 16h23
  2. [CF][C#] Comment récupérer adresse Mac d'un PPC ?
    Par JBernn dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 12/01/2006, 18h14
  3. Réponses: 2
    Dernier message: 26/12/2005, 00h38
  4. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo