![]() |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
warum trennst du die verbindungen wenn du sie danach wieder aufbaust? Dein Fehler könnte darin liegen das der Server nicht erreichbar ist oder darin das du open aufrufst und danach gleich den Text sendest ohne zu warten das die Verbindung hergestellt wurde. Open ist so weit ich mich erinnere nicht blockierend!
|
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
@Sir Thornberry:Ach, da war doch was...
Ich hab das immer so gelöst:
Delphi-Quellcode:
client.open;
repeat application.processmessages; until client.active; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
wäre eine Möglichkeit welche die CPU aber reichlich auslastet. Dann doch lieber die Events der Klasse nutzen.
|
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Habe ich schon geschrieben...
Delphi-Quellcode:
Ist vielleicht nicht elegant, aber es funktioniert. Wenn es dir die CPU zu sehr auslastet, bau halt ein sleep rein.
repeat
application.processmessages until clientsocket1.active; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Delphi-Quellcode:
procedure TForm1.AllCommandTimerTimer(Sender: TObject);
var tempip:String; begin tempip := ListIp.Items[ListIp.Itemindex]; try Client.Close; Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geschlossen'); except Memo1.Lines.Add('Socket zu ' + tempip + ' konnte nicht geschlossen werden'); end; Client.Host := tempip; try Client.Open; Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geöffnet'); except Memo1.Lines.Add('Socket zu ' + tempip + ' nicht geöffnet'); end; repeat application.processmessages until Client.active; try Client.Socket.SendText(AllCommand); Memo1.Lines.Add('IP ' + tempip + ' erfolgreich'); except Memo1.Lines.Add('IP ' + tempip + ' nichterfolgreich'); end; ListIp.ItemIndex := ListIp.Itemindex + 1; if (ListIp.ItemIndex >= ListIp.Count) then AllCommandTimer.Enabled := False; end; Ist doch richtig oder? |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Sollte so eigentlich funktionieren.
|
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Nein, tut es nicht. Er macht nach
Delphi-Quellcode:
irgendwie nichts mehr.
procedure TForm1.AllCommandTimerTimer(Sender: TObject);
var tempip:String; begin tempip := ListIp.Items[ListIp.Itemindex]; try Client.Close; Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geschlossen'); except Memo1.Lines.Add('Socket zu ' + tempip + ' konnte nicht geschlossen werden'); end; Client.Host := tempip; try Client.Open; Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geöffnet'); except Memo1.Lines.Add('Socket zu ' + tempip + ' nicht geöffnet'); end; repeat application.processmessages until Client.active; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Wie hoch ist das Intervall des Timers? Und step das Ganze mal mit dem Debugger durch.
|
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Intervall ist auf 1000
Debuger kommt glei Im Projekt pClient ist eine Exception der Klasse ESocketError mit der Meldung Asynchroner Socket-Fehler 10060 aufgetreten. Das kommt aber erst ganz zum schluss, also nachdem er die letzte von 20IP's aufgerufen hat, und der rechner ist net an. Also irgendwie klappt das net so ganz.
Delphi-Quellcode:
das macht er immer
Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geschlossen');
Delphi-Quellcode:
und das.
Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geöffnet');
Aber die danachfolgenden sachen wie SendText scheint er anscheinend net zu machen. Auch die ausgaben in das memo feld passieren nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz