![](/img/trans.png)
[英]SOAP server and client application VCL+indy demo for Delphi XE?
[英]simple UDP example/demo application for Delphi XE-7 and Indy 10.6.0.5169
我正在尋找Delphi XE-7和Indy 10.6.0.5169的簡單UDP示例/演示應用程序。
我已經尋找了一段時間,我發現的所有內容都是針對不再編譯的Indy或Delphi的舊版本。
我需要實現UDP客戶端才能處理WS-Discovery消息。
我嘗試使用此處列出的應用程序:
http://delphi.about.com/library/weekly/code/src101105.zip
SendBuffer
在這里給我一個錯誤:
procedure TUDPSearchForm.SearchPartner;
var
x: Array[0..3] of Byte;
begin
RadioGroup1.Items.Clear;
RadioGroup1.ItemIndex := -1;
Height := 50+13;
Top := Top;
Left := left;
Show;
IdUDPClient1.Host := '255.255.255.255';
IdUDPClient1.Active := true;
IdUDPClient1.BroadcastEnabled := True;
x[0] := $00; // Search Receivers
x[1] := $00; // Search
x[2] := MessageCount div $100;
x[3] := MessageCount mod $100;
inc(MessageCount);
IdUDPClient1.Port := UDPDefaultPort;
IdUDPClient1.SendBuffer(x, 4);
IdUDPClient1.BroadcastEnabled := False;
end;
該示例適用於TIdBytes
。對於Indy 10,您必須使用TIdBytes
而不是固定數組,例如:
procedure TUDPSearchForm.SearchPartner;
var
x: TIdBytes;
begin
RadioGroup1.Items.Clear;
RadioGroup1.ItemIndex := -1;
Height := 50+13;
Top := Top;
Left := left;
Show;
IdUDPClient1.Host := '255.255.255.255';
IdUDPClient1.Active := true;
IdUDPClient1.BroadcastEnabled := True;
SetLength(x, 4);
x[0] := $00; // Search Receivers
x[1] := $00; // Search
x[2] := MessageCount div $100;
x[3] := MessageCount mod $100;
inc(MessageCount);
IdUDPClient1.Port := UDPDefaultPort;
IdUDPClient1.SendBuffer(x);
IdUDPClient1.BroadcastEnabled := False;
end;
您可以使用Broadcast()
方法代替SendBuffer()
來稍微簡化代碼:
procedure TUDPSearchForm.SearchPartner;
var
x: TIdBytes;
begin
RadioGroup1.Items.Clear;
RadioGroup1.ItemIndex := -1;
Height := 50+13;
Top := Top;
Left := left;
Show;
SetLength(x, 4);
x[0] := $00; // Search Receivers
x[1] := $00; // Search
x[2] := MessageCount div $100;
x[3] := MessageCount mod $100;
inc(MessageCount);
IdUDPClient1.Broadcast(x, UDPDefaultPort);
end;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.