ich brauche eine Rückmeldung von einer UDP-Verbindung.
Bei Windows + Delphi + Indy kann ich auf ein ESP8266 die Anfrage stellen z.B. 40000 und erhalte enen Wert/String von dem ESP-Modul zurück.
Bei Raspi + Lazarus + Synapse kommt der Antwort-Wert/String nicht zurück.
Windows : sende 4000 an '192.168.3.47' Port '90' und nach dem Empfang des ESP liefert der den Wert/String zurück
sende 4100 an .. und der ESP schaltet = alles ist super
Raspi : sende 4100 an ... und der ESP schaltet = alles super, abe ich bekommen keine receive???
hier der Standard-Code für Lazarus mit Synapse :
Code: Alles auswählen
function TF_P02.SendData(sSend : string):string;
var
sndsock : TUDPBlockSocket;
rcvsock : TUDPBlockSocket;
buf : string;
begin
sndsock := TUDPBlockSocket.Create;
rcvsock := TUDPBlockSocket.Create;
try
sndsock.createsocket;
rcvsock.CreateSocket;
sndsock.Bind(gv.csIP,gv.ssPort); //'0.0.0.0','0'); das sind meine Verbindungsdaten
sndsock.MulticastTTL := 1;
sndsock.connect(gv.csIP, gv.csPort); //'234.5.6.7','22401');
Assert(sndsock.LastError = 0);
sndsock.SendString(sSend);
buf:= sndsock.RecvString(600); // es kommt NICHTs an
// buf:= sndsock.RecvBlock(600); // Fehler
// buf:= IntToStr(sndsock.RecvInteger(600)); // irgendeine Zahl
s_Memo.Lines.Add('rec ' + buf);
rcvsock.Bind(gv.ssIP,gv.ssPort);
rcvsock.AddMulticast(gv.csIP); //'234.5.6.7');
Assert(rcvsock.LastError = 0);
s_Memo.Lines.Add('ress' + rcvsock.RecvString(600) );
sndsock.CloseSocket;
rcvsock.CloseSocket;
finally
sndsock.free;
rcvsock.free;
end;
Result := buf;
end;
Wo ist mein Fehler und danke an den Helfer für mein Problem.