簡體   English   中英

Delphi XE-7和Indy 10.6.0.5169的簡單UDP示例/演示應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM