Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Indy 9 Sample - UDPClientServer - Delphi 6 -> 2006 ?!

  Alt 17. Dez 2008, 13:10
Hallo,

leider kann ich das nicht testen.
Habe "nur" Indy 9 installiert.

Delphi-Quellcode:
procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);
var
  DataStringStream: TStringStream;
  s: String;
  data: TBytes;
begin
  DataStringStream := TStringStream.Create(''); // <-- hier Haltepunkt setzen
  try
    DataStringStream.Write(AData, Length(AData));
    DataStringStream.Position := 0; // eventuell noch die Position auf 0 setzten
    UDPMemo.Lines.Add('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
    s := 'Replied from ' + UDPServer.Name + ' to "' + DataStringStream.DataString + '"';
    SetLength(data, Length(s)-1);
    move(s[1], data, Length(s)-1);
    ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, data);
  finally
    DataStringStream.Free;
  end;
end;
Irgendetwas passt nicht bei der Übergabe des Bytearray in den StringStream.
Wahrscheinlich kann man das so nicht lösen.


Delphi-Quellcode:
procedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);
var
  s: String;
  dataString: String;
  data: TBytes;
begin
  dataString:=String(pchar(AData))
  UDPMemo.Lines.Add('Received "' + dataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
  s := 'Replied from ' + UDPServer.Name + ' to "' + DataString + '"';
  SetLength(data, Length(s)-1);
  move(s[1], data, Length(s)-1);
  ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, data);
end;
.. so langsam gehen mir auch die Ideen aus.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat