> I've created a TWSocketServer that spawns a TWSocket per client connection
> (as per the ICS examples). I was wondering if it's possible to obtain the
> MAC address of the connecting client using the HSocket or TWSocket. 
> Clients
> will be connecting from remote networks via Internet into my server.  I'm
> using ICS v6 on C++ Builder 2009.
>


you'll get their Mac Adress only if the clients are on the same network

Eric

function RENVMAC(adresseIP:string):string;
//always returns a macadress in uppercase  xx.xx.xx.xx.xx.xx
//returns '00.00.00.00.00.01' if local IP
//returns '00.00.00.00.00.00' if outside your network
var monip:ulong;
    monmac:array[0..5] of byte;
    monmaclength:ulong;
    MacAdresse:string;
begin
  if adresseIP='127.0.0.1' then MacAdresse:='00.00.00.00.00.01' else
    begin
      MacAdresse:='';
      if adresseIP<>'' then
        begin
          try
            monip:=inet_addr(PChar(adresseIP));// uses Winsock
            monmaclength:=length(monmac);
            //sendarp returns 0 if ok
            if sendarp(monip,0,@monmac,@monmaclength)=0 then
              begin
                
MacAdresse:=AnsiUpperCase(format('%2.2x.%2.2x.%2.2x.%2.2x.%2.2x.%2.2x',[monmac[0],monmac[1],monmac[2],monmac[3],monmac[4],monmac[5]]));
              end;
          except
          end;
          if length(MacAdresse)<>17 then MacAdresse:='';
        end;
    end;
  if MacAdresse='' then MacAdresse:='00.00.00.00.00.00';
  result:=MacAdresse;
end;


-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to