Einzelnen Beitrag anzeigen

emteg

Registriert seit: 16. Jun 2005
71 Beiträge
 
Delphi 2009 Architect
 
#1

[Indy10] Fehler beim senden mit UDP - Daten kommen zurück

  Alt 9. Mai 2010, 22:29
Ich habe hier grade ein merkwürdiges und asymmetrisches problem: Ich versuche per UDPClient.Send() einen String an einen Host zu senden. Am anderen Ende kommt nichts an, dafür geht aber sofort auf der sender-seite die UDPServer.OnRead methode auf und erhält die daten, die ich grade gesendet habe. Außerdem behauptet der UDPServer noch, dass die daten von der IP kommen, wo sie eigentlich hin sollten.

Server und client sind broadcast enabled, broadcasts kommen auch in beide richtungen problemlos an.

Delphi-Quellcode:
// Senden
procedure TConnection.Send(Msg, IP: String);
begin
  FUDPClient.Host := IP;
  FUDPClient.Send(Msg);
end;

//Empfangen
procedure TConnection.OnUDPRead(AThread: TIdUDPListenerThread; AData: TBytes;
  ABinding: TIdSocketHandle);
var
  i: integer;
  s: String;
begin
  s := '';

  for i := 0 to Length(AData) - 1 do
    s := s + Chr(AData[i]);

  // << Tue Dinge mit s >>
end;
Jetzt wirds noch ne stufe merkwürdiger: ich habe das gleiche problem, wenn ich das ganze über TCP versuche. Beim empfänger kommt nichts an, dafür springt sofort meine OnExecute methode an, die behauptet sie hätte daten vom zielhost empfangen.
Allerdings muss ich dazu sagen, dass ich mit dem indy10 TCP nocht nicht so ganz firm bin

Delphi-Quellcode:
// Senden
procedure TConnection.Send(Msg, IP: String);
begin
  FTCPClient.Host := IP;
  FTCPClient.IOHandler.Open;
  FTCPClient.IOHandler.WriteLn(Msg);
end;

// Empfangen
procedure TConnection.OnExecute(AContext: TIdContext);
var s: string;
begin
  s := AContext.Connection.IOHandler.ReadLn;

  // << Tue dinge mit s >>
end;
Ich blick da grade echt nicht mehr durch. Mache ich irgendwelche dinge bzgl. indy 10 falsch?
  Mit Zitat antworten Zitat