내 LAN에 브로드 캐스트 UDP 메시지를 보내려합니다. 응용 프로그램은 클라이언트/서버입니다.델파이에서 브로드 캐스트 메시지를 보내려면 어떻게해야합니까?
사용자 인터페이스를 업데이트하려는 경우, 컴퓨터가 다른 컴퓨터를 업데이트하기 위해 메시지를 보내는 방식입니다. indy UDPServer를 어떻게 사용할 수 있습니까? 감사합니다.
내 LAN에 브로드 캐스트 UDP 메시지를 보내려합니다. 응용 프로그램은 클라이언트/서버입니다.델파이에서 브로드 캐스트 메시지를 보내려면 어떻게해야합니까?
사용자 인터페이스를 업데이트하려는 경우, 컴퓨터가 다른 컴퓨터를 업데이트하기 위해 메시지를 보내는 방식입니다. indy UDPServer를 어떻게 사용할 수 있습니까? 감사합니다.
TIdUDPServer
또는 TIdUDPClient
구성 요소를 만듭니다. 두 가지 모두 정확히 Broadcast
방법이 필요합니다.
자,이 방법에 대한 예제가 있습니까? –
아니요, 아닙니다. 나는 그들을 사용한 적이 없다. 무슨 문제가 있습니까? 브로드 캐스트하려는 문자열 메시지를주고 브로드 캐스트합니다. –
두 개의 응용 프로그램을 만듭니다. 하나는 송신자를 나타내고 다른 하나는 수신자를 나타냅니다.
드롭 양식에 TIdUDPClient
과 TButton
구성 요소입니다. 버튼 쓰기의 OnClick
핸들러 :
procedure TfrmUDPClient.BroadcastClick(Sender: TObject);
begin
UDPClient.Broadcast('Test', 8090);
end;
을 드롭 TIdUDPServer
, 그것을 위해 동일한 포트 (8090)를 정의하고 OnUDPRead
핸들러이 추가
procedure TfrmUDPServer.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
DataStringStream: TStringStream;
Msg: String;
begin
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
Msg := DataStringStream.DataString;
finally
DataStringStream.Free;
end;
ShowMessage(Msg);
end;
두 응용 프로그램을 모두 테스트하고 단추를 클릭하십시오. 두 개 이상의 "리스너"로 테스트하려면 다른 시스템을 사용해야합니다. 즉 동일한 IP에서 여러 리스너를 실행할 수 없습니다.
실제로 동일한 IP에 둘 이상의 UPD Listener를 가질 수 있습니다. 여기를 참고하십시오. http://stackoverflow.com/questions/2604826/multicast-messages-to-multiple-clients-on-the-same-machine –
스위치' Delphi7의 컴포넌트에서 'Active'와'BroadcastEnabled'를 true로 설정하십시오! –
UDP는 신뢰할 수 없습니다. http://en.wikipedia.org/wiki/User_Datagram_Protocol#Comparison_of_UDP_and_TCP - "메시지를 보내면 목적지에 도달 할 것인지 알 수 없으므로 메시지가 사라질 수 있습니다. 승인, 재전송 또는 타임 아웃에 대한 개념은 없습니다. " – mjn
UDP 대신에 스레드의 서버 메시지를 수신하는 TCP 클라이언트 소켓 연결을 사용합니다. 하트 비트 프로토콜을 사용하여 클라이언트 또는 서버 측 단절을 감지 할 수 있습니다. – mjn