わかりました、私はこれに非常に不満を感じています。コンピューターを窓から放り出す前に、あなたの助けを求めたいと思います. 私はソケットをいじっています。私が提供する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)