Embarcadero RAD Studio XE2 Update 4 とそれに同梱されている Indy パッケージを使用しています。
私の意図は、サーバーからの応答を待ってIPを取得する TIdUDPClient からのブロードキャストでLAN内のサーバーを見つけることです。TIdUDPClient メソッド ReceiveString を引数なしで使用すると、データの受信は正常に機能します。
しかし、RAD Studio に付属している Indy 10 ドキュメント バージョン 10.5.8.3 にあるオーバーロードされたバージョンを使用しようとすると、コンパイルされず、「E2250: これらの引数で呼び出すことができる 'ReceiveString' のオーバーロードされたバージョンはありません」と表示されます。 . これが私のコードです:
unit Client;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPClient, Vcl.StdCtrls, IdGlobal;
type
TFormLC = class(TForm)
UDPClient: TIdUDPClient;
LServer: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
FormLC: TFormLC;
implementation
{$R *.dfm}
function findServer:string;
var ans, ip : string;
port: TIdPort;
begin
with FormLC.UDPClient do begin
Active := True;
BroadcastEnabled:=True;
Broadcast('ServerRequest', 1234);
ans := ReceiveString(ip, port);
Active := False;
end;
if SameText(ans, 'ServerAccept') then
result := ip
else
result := '';
end;
procedure TFormLC.Button1Click(Sender: TObject);
var ans:string;
begin
LServer.Caption := findServer;
end;
end.
Indy のオンライン ドキュメントが IDE に付属のドキュメントと異なることに気付き、そこで説明されているように試してみましたが、成功しませんでした。
どんな助けでも素晴らしいでしょう!