Delphi 域名解析为IP地址

花生壳:

1.LJSZForm-Lable1-Caption改成 “IP地址或域名:”

2.LJSZForm-BitBtn1Click-注释掉--else if IsIP(Trim(IPEdit.Text))=False then

TLShowMessage('IP地址错误',False)

3.DataM-DLDataSrvr-fmLJWait.Label1.Caption:='正在连接数据服务器,请稍候....';

fmLJWait.Update;-后面SConn.Address:=ZJIPAdd;改成

if IsIP(Trim(ZJIPAdd)) then

begin

SConn.Address:=ZJIPAdd;

end else

begin

SConn.Address:=HostToIP(ZJIPAdd);

end;

4.DataM加一个函数解析花生壳域名

function HostToIP(Name: string):STRING;

var

wsdata : TWSAData;

hostName : array [0..255] of char;

hostEnt : PHostEnt;

addr : PChar;

begin

WSAStartup ($0101, wsdata);

try

gethostname (hostName, sizeof (hostName));

StrPCopy(hostName, Name);

hostEnt := gethostbyname (hostName);

if Assigned (hostEnt) then

if Assigned (hostEnt^.h_addr_list) then begin

addr := hostEnt^.h_addr_list^;

if Assigned (addr) then begin

Result := Format ('%d.%d.%d.%d', [byte (addr [0]),

byte (addr [1]), byte (addr [2]), byte (addr [3])]);

end

else

Result := '';

end

else

Result := ''

else begin

Result := '';

end;

finally

WSACleanup;

end

end;

5.DataM-uses-加上 ,WinSock

改变服务端:

1.tljxcwj-MainForm.Caption:=DMName+iif(m_RegFlags=0,'(未注册)','');改成 MainForm.Caption:=DMName;

2.DataM-SConn

Port:5927

ServerGUID:{F64E160D-552B-4C8B-9428-3C850B53A6F9}

3.DataM-DLDataSrvr-

Function TDataM.DLDataSrvr():Boolean; // 登录数据服务器

Var Re:String;

RegFlags:Integer;

HWndCalc:HWnd;

XFFlags:Boolean;

IPSvr:String;

begin

Result:=True;

if DataM.SConn.Connected then

DataM.SConn.Close;

CSPath:=Extractfiledir(application.ExeName);

InstProc('midas.dll');

InstProc('dbclient.dll');

InstProc('intrcpt.dll');

GetZJLJFS();

if ZJLJFS=0 then

begin

if (FileExists(CSPath+'\'+ServerFileName)) then

begin

HWndCalc:=FindWindow(nil,ServerRunFlags);

if HWndCalc=0 then

WinExec(PChar(CSPath+'\'+ServerFileName),SW_RESTORE);

SConn.Address:='127.0.0.1';

end

else

begin

Application.CreateForm(TLJSZForm, LJSZForm);

if LJSZForm.ShowModal=mrCancel then

begin

ExitFlags:=True;

Result:=False;

LJSZForm.Free;

exit;

end;

LJSZForm.Free;

end;

end;

fmLJWait.Label1.Caption:='正在查找数据服务器,请稍候....';

fmLJWait.Show;

fmLJWait.Update;

XFFlags:=True;

While XFFlags do

begin

XFFlags:=False;

if ZJLJFS=1 then

begin

fmLJWait.Label1.Caption:='正在连接数据服务器,请稍候....';

fmLJWait.Update;

if IsIP(Trim(ZJIPAdd)) then

begin

SConn.Address:=ZJIPAdd;

end else

begin

SConn.Address:=HostToIP(ZJIPAdd);

end;

end

else

begin

fmLJWait.Label1.Caption:='正在读取数据服务器的IP地址,请稍候....';

fmLJWait.Update;

Re:=DIPHttp1.GetSrvrIP(ZJDLZH,ZJDLMM);

if Re='Error' then

begin

XFFlags:=True;

end

else

begin

fmLJWait.Label1.Caption:='正在连接数据服务器,请稍候....';

fmLJWait.Update;

SConn.Address:=Re;

end;

end;

if Not XFFlags then

begin

try

DataM.SConn.Connected:=True;

except

XFFlags:=True;

end;

end;

if XFFlags then

begin

fmLJWait.Close;

Application.CreateForm(TLJSZForm, LJSZForm);

if LJSZForm.ShowModal=mrCancel then

begin

XFFlags:=False;

ExitFlags:=True;

Result:=False;

LJSZForm.Free;

exit;

end

else

begin

LJSZForm.Free;

fmLJWait.Show;

fmLJWait.Update;

end;

end;

end;

YGDAListCDS.Open;

fmLJWait.Close;

end;

4.Pubsub-Const

SJtmpFileName='tlclienttmpN.exe'; // 升级时的临时文件

JKFileName='TLJK.exe'; // 鸿鹏监控文件

RegTabeBoot='\Software\TaiLaiSoft\'; // 在注册表中根

RegTableWZ='TLWJGL' ; // 注册表目录的文件名

ServerFileName='TLWJSrvr.exe'; // 服务端程序名称

ServerRunFlags='tlwjglsrvr'; // 服务端已运行的标识

m_SoftName='商务E点通五金版';

m_SoftCaption='商务E点通五金版';

AdminRunFlags = 'TLJXCWJAdmin'; // 客户端系统管理员运行标识

ClientRunFlags = 'TLJXCWJClient'; // 客户端运行标识

FXiniFileName='TLJXCWJ' ; // INI文件的文件名

m_SoftVer='1.00';

5.Pubsub-procedure GetSysOption;-IniFileName:=CSPath+'\'+FXiniFileName+'.ini';