2014-12-03 1 views
0

Delphi XE-7 및 Indy 10.6.0.5169에 대한 간단한 UDP 예제/데모 응용 프로그램을 찾고 있습니다.Delphi XE-7 및 Indy에 대한 간단한 UDP 예제/데모 응용 프로그램 10.6.0.5169

나는 잠시 동안 찾고 있었는데, 더 이상 컴파일하지 않는 오래된 버전의 Indy 나 Delphi를 찾고 있습니다.

WS-Discovery 메시지를 처리하기 위해 UDP 클라이언트를 구현해야합니다.

http://delphi.about.com/library/weekly/code/src101105.zip

SendBuffer 여기 나에게 오류를주고있다 :

나는 응용 프로그램이 여기에 나열된 사용하려고 예 인디 10의 인디 9에 대한 의미하는지

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; 
+0

XE7에 특정한 어떤 사례가 없습니다. 특정 데모를 사용하고 싶지만 컴파일하지 않으면 코드가 표시되고 누군가 (아마 나)가 컴파일하여 컴파일합니다. –

+0

여기에 나열된 응용 프로그램을 사용하려고했습니다 : http://delphi.about.com/library/weekly/code/src101105.zip – wjvandyke

+0

오류가 발생합니다 : – wjvandyke

답변

2

, 당신 고정 배열 대신 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; 

당신은 SendBuffer() 대신 Broadcast() 방법을 사용하여 코드를 약간 단순화 할 수 있습니다 :

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; 
+0

고마워요. 나는 "UDPSearchForm.OnUDPRead : = UDPRead;"설정을 끊었습니다. TForm1.Activate에서. idUDPServer.TIdUDPListnerThread가 필요합니다. – wjvandyke

+0

그리고 정확히 무엇에 대해 "매달린"것입니까? 'TIdUDPListenerThread'는'IdUDPServer' 유닛에서 선언되며,'TUDPReadEvent'와 같습니다. 유닛이'uses' 절에 있는지 확인하십시오. –

관련 문제