To update IP address at DNSZI(http://dnszi.com), you need user ID, auth key, your domain name, and its hostname.
Below code get local IP address assigned, and update DNS at http://dnszi.com
function UpdateDNSByLocalIP(dnszi_user_id, dnszi_auth_key, dnszi_domain, dnszi_record: string):string; type TaPInAddr = array [0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: array [0..63] of Ansichar; i: Integer; GInitData: TWSADATA; IdHTTP: TIdHTTP; MyIP, url, S: string; begin WSAStartup($101, GInitData); MyIP := ''; GetHostName(Buffer, SizeOf(Buffer)); phe := GetHostByName(Buffer); if phe = nil then Exit; pptr := PaPInAddr(phe^.h_addr_list); i := 0; while pptr^[i] <> nil do begin MyIP := StrPas(inet_ntoa(pptr^[i]^)); Inc(i); end; WSACleanup; // update DNS IdHTTP := TIdHTTP.Create(nil); try url := 'http://ddns.dnszi.com/set.html?user=' + dnszi_user_id + '&auth=' + dnszi_auth_key + '&domain=' + dnszi_domain + '&record=' + dnszi_record + '&ip=' + MyIP; S := IdHTTP.Get( url); finally IdHTTP.Free; end; Result := S; end;
Below code just update domain name by public IP address combined with your router instead of local IP address actually assigned to your computer.
function UpdateDNSByLocalIP(dnszi_user_id, dnszi_auth_key, dnszi_domain, dnszi_record: string):string; var IdHTTP: TIdHTTP; url, S: string; begin // update DNS IdHTTP := TIdHTTP.Create(nil); try url := 'http://ddns.dnszi.com/set.html?user=' + dnszi_user_id + '&auth=' + dnszi_auth_key + '&domain=' + dnszi_domain + '&record=' + dnszi_record; S := IdHTTP.Get( url); finally IdHTTP.Free; end; Result := S; end;