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?