Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Socket-Text an mehrere Rechner nacheinander im Netzwerk send (https://www.delphipraxis.net/90877-socket-text-mehrere-rechner-nacheinander-im-netzwerk-send.html)

Maikiboy 26. Apr 2007 17:47

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;

Maikiboy 27. Apr 2007 12:40

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
 
Was ist eigentlich mit Client.Free, muss man damit noch irgendwie arbeiten?

Delphi-Quellcode:
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;
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?

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 :-)

Apollonius 27. Apr 2007 14:00

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;

Maikiboy 27. Apr 2007 14:37

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
    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;
so funktionierts, danke für die Hilfe.

Maikiboy 8. Mai 2007 14:03

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:
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;
gruss Maik

Maikiboy 9. Mai 2007 12:11

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
 
*push


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
Seite 3 von 3     123   

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