Hi,
üblicherweise sieht die Kommunikation in einem Socket so aus:
Delphi-Quellcode:
procedure TForm1.SendButton(Sender: TObject);
begin
Socket1.Socket.SendText('ping,ping my server!');
Log.Items.Add('Ping gesendet');
end;
procedure TForm1.OnRead(Sender: TObject; Socket: TCustomWinSocket);
begin
if Memo1.Socket.ReceiveText = 'i''m online' then
Log.Items.Add('Server Online');
end;
Jetzt brauche ich allerdings eine Funktion, die nach erfolgreicher Antwort ein True zurückgibt aber der Compiler versteht scheinbar kein deutsch
Delphi-Quellcode:
function Ping(
IP:
string): Boolean;
begin
Socket1.Socket.SendText('
ping,ping my server!');
"Prüfe alle 5ms auf Antwort (TimeOut 2sek), wenn erhalten"
do
if Antwort = RichtigeAntwort
then Result:= True;
end;
Ich würde das mit einer globalen Variable lösen, die von der OnRead procedure geändert wird, allerdings erfordert das eine while Schleife in der Sende procedure, die solange sinnlos ausgeführt wird und CPU Last verschlingt bis ein Text erhalten wurde..
jemand ne Idee?