好的,我对此感到非常沮丧,并想在我将电脑扔出窗外之前寻求您的帮助。我弄乱了套接字,我编写了一段代码来从我提供的 DNS 中获取 ip。如果我执行命令 showmessage(getipfromdns('test.no-ip.org'));
它会显示IP地址没问题。
但是,如果我尝试 client1.Host/address(我都尝试过)client1.Host := getipfromdns('test.no-ip.org');
并给我一个错误,说没有指定地址。
这是从dns获取ip的函数
function getipfromdns(HostName: string): string;
type
tAddr = array [0..100] of PInAddr;
pAddr = ^tAddr;
var
I: Integer;
WSA: TWSAData;
PHE: PHostEnt;
P: pAddr;
begin
Result := HostName;
WSAStartup($101, WSA);
try
PHE := GetHostByName(pChar(HostName));
if (PHE <> nil) then
begin
P := pAddr(PHE^.h_addr_list);
I := 0;
while (P^[i] <> nil) do
begin
Result := (inet_nToa(P^[i]^));
Inc(I);
end;
end;
except
end;
WSACleanup;
end;
这是创建表单时的代码。
procedure TForm1.FormCreate(Sender: TObject);
var
duchost : string;
begin
duchost := getipfromdns('test.no-ip.org');
Client1.Address := duchost;
Client1.Active := True;
end;
(client1 是 TCPServerSocket 类型)