3
我使用delphi XE6 SOAP服务器WebModuleUnit,我可以得到广域网和局域网的客户端IP地址。如何在delphi SOAP服务器上获取客户端mac地址?
我可以得到客户端的MAC地址,使用TCPIP ARP'iphlpapi.dll'和'SendARP'功能。 工程局域网,但不工作WAN网络。
如何在工作WAN中获取客户端的MAC地址?
我的代码(它不工作WAN)
type TIPAddr = u_long;
TMACAddr = array [0..5] of byte;
function SendARP (DestIP, SrcIP: TIPAddr; var TMacAddr: TMACAddr; var len: u_long): DWORD; stdcall; external 'iphlpapi.dll' name 'SendARP';
function GetMacAddress(Client: Ansistring):AnsiString;
///------------------------------
implementation
///------------------------------
function GetMacAddress(Client: Ansistring):AnsiString;
var
l: integer;
mac:TMACAddr;
Rets:Integer;
begin
memset(@mac[0],0,sizeof(mac));
l:= sizeof (TMACAddr);
Rets:=sendARP(inet_addr (P_Char (Client)), 0, mac, l);
result:=AnsiString(Format('%.2X-%.2X-%.2X-%.2X-%.2X-%.2X',[mac[0],mac[1],mac[2],mac[3],
mac[4],mac[5]]));
end;
unction TTRX_Service.ClientIP: AnsiString;
var
WebDispatcher: IWebDispatcherAccess;
begin
Result := '';
if Supports(GetSOAPWebModule, IWebDispatcherAccess, WebDispatcher) then
Result := AnsiString(WebDispatcher.Request.RemoteAddr);
Debug('MAC Adress:%s',[GetMacAddress(Result)]);
end;
你能帮帮我吗?