![]() |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
So, habs jetzt nochmal mit Sleep gemacht, folgt aber genau der gleiche Mist.
Er öffnet zwar sockets und so alles korrekt, aber er sendet merkwürdigerweise den Text nicht.
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; sleep(900); 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; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Was ist eigentlich mit Client.Free, muss man damit noch irgendwie arbeiten?
Delphi-Quellcode:
Solangsam werd ich verrückt, hab schon soviel Versucht, und so wie ichs jetzt gerade gepostet habe muss es doch eigentlich funtzen oder seh ich das falsch?
procedure TForm1.AllCommandTimerTimer(Sender: TObject);
var tempip:String; begin tempip := ListIp.Items[ListIp.Itemindex]; try Client.Close; Client.Host := tempip; Client.Open; sleep(100); Client.Socket.SendText(AllCommand); Memo1.Lines.Add('Erfolgreich IP ' + tempip + ' abgearbeitet'); except Memo1.Lines.Add('IP ' + tempip + ' konnte nicht abgearbeitet werden'); end; ListIp.ItemIndex := ListIp.Itemindex + 1; if (ListIp.ItemIndex >= ListIp.Count) then AllCommandTimer.Enabled := False; end; Er gibt zwar immer aus Erfolgreich IP lala abgearbeitet, aber den text sendet er nie wirklich. Habe auch gerade nochmal getestet ob tempip und AllCommand gesetzt sind, und alles ist korrekt. Komisch, komisch :-) |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Mach mal direkt nach dem sendtext eine if-Abfrage rein, ob client.active auch wirklich wahr ist. Und mit dem sleep meint ich eigentlich nur Folgendes, um die Auslastung der CPU zu verringern:
Delphi-Quellcode:
repeat
sleep(100); application.processmessages; until client.active; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
Delphi-Quellcode:
so funktionierts, danke für die Hilfe.
procedure TForm1.AllCommandTimerTimer(Sender: TObject);
var tempip:String; begin tempip := ListIp.Items[ListIp.Itemindex]; try begin Client.Close; Client.Host := tempip; Client.Open; repeat sleep(100); application.processmessages; until client.active; Client.Socket.SendText(AllCommand); if (Client.Active) then Memo1.Lines.Add('Client ist aktiv.'); Memo1.Lines.Add('Erfolgreich Befehl ' + AllCommand + ' an IP ' + tempip + ' gesendet'); end; except Memo1.Lines.Add('IP ' + tempip + ' konnte nicht abgearbeitet werden'); end; ListIp.ItemIndex := ListIp.Itemindex + 1; if (ListIp.ItemIndex >= 20) then AllCommandTimer.Enabled := False; end; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
So, ich habe das ganze jetzt noch etwas umgeschrieben und habe den komischen fehler das er nicht disconnectne mag und somit das Event OnDisconnect nicht ausgelösst wird.
Einer ne idee?
Delphi-Quellcode:
gruss Maik
procedure TForm1.AllCommandTimerTimer(Sender: TObject);
var tempip:String; var error:Byte; begin error:=0; tempip := ListIp.Items[ListIp.Itemindex]; GlobalCommand := AllCommand; GlobalIP := tempip; Client.Close; ListIp.ItemIndex := ListIp.Itemindex + 1; if (ListIp.ItemIndex >= 20) then AllCommandTimer.Enabled := False; end; procedure TForm1.ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin if (AllCommandTimer.Enabled = true) then begin Memo1.Lines.Add('Connect erfolgreich --> Sende ' + GlobalCommand); Client.Socket.SendText(GlobalCommand); end; end; procedure TForm1.ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin if (AllCommandTimer.Enabled = true) then begin Memo1.Lines.Add('Disconnect erfolgreich --> Verbinde auf ' + GlobalIP); Client.Host := GlobalIP; Client.Open; end; end; |
Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
*push
|
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