Moin und

im Forum!
Maikiboy hat folgendes geschrieben: |
So hats letzendlich funktioniert. |
Auch wenn es soweit du es verwendest "funktioniert", ist die Vorgehensweise mit der Pollingsschleife für die Socket-Komponenten (im non-blocking-mode) "gegen den Strich gebürstet"...
Du solltest das vernünftig ereignisorientiert machen, also auch ohne diesen Timer. Ansatz wäre in etwa so:
Du startest den Versand der Nachricht(en) z.B. mit einem Button:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm1.Button1Click(Sender: TObject); begin Client.Close; Client.Host := ListIp.Items.Strings[ListIp.Itemindex]; Client.Open; end;
procedure TForm1.ClientOnConnect(Sender: TObject; Socket: TCustomWinSocket); begin Client.Socket.SendText(AllCommand); Memo1.Lines.Add('Erfolgreich Befehl ' + AllCommand + ' an IP ' + Socket.RemoteAddress + ' gesendet'); Client.Socket.Close; end;
procedure TForm1.ClientOnDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin if (ListIp.ItemIndex < ListIp.Count) then ListIp.ItemIndex := ListIp.Itemindex + 1; Memo1.Lines.Add('Verbindung getrennt, nächste Verbindung: '+ListIp.Items.Strings[ListIp.ItemIndex]); Client.Host := ListIp.Items[ListIp.Itemindex]; Client.Open; end;
|
Auf diese Weise hast du eine Ereigniskette und die Socketkomponente wird "designgerecht" verwendet.
Hinweis am Rande: man kann in deinem Code zwar nicht erkennen, wie du das Protokoll für deine Anwendung ausgelegt hast, aber falls du mal Probleme mit den Befehlen kriegst, dann schau mal
hier hin.
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.