Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

SirThornberry 25. Apr 2007 12:55

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!

Apollonius 25. Apr 2007 13:01

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;

SirThornberry 25. Apr 2007 13:09

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.

Maikiboy 26. Apr 2007 14:59

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
 
Zitat:

Und auf der anderen Seite gibt es wirklich einen TServersocket, der auf dem selben Port lauscht?
Jap, das funktioniert.

Zitat:

warum trennst du die verbindungen wenn du sie danach wieder aufbaust?
Es wird aber zu einer anderen IP aufgebaut!

Zitat:

Dein Fehler könnte darin liegen das der Server nicht erreichbar ist
Doch, die Rechner sind alle an und erreichbar.

Zitat:

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!
Wie lange soll ich da warten? Bzw. wie würde ich das am besten machen?

Apollonius 26. Apr 2007 16:45

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
 
Habe ich schon geschrieben...
Delphi-Quellcode:
repeat
application.processmessages
until clientsocket1.active;
Ist vielleicht nicht elegant, aber es funktioniert. Wenn es dir die CPU zu sehr auslastet, bau halt ein sleep rein.

Maikiboy 26. Apr 2007 16:57

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?

Apollonius 26. Apr 2007 17:01

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
 
Sollte so eigentlich funktionieren.

Maikiboy 26. Apr 2007 17:07

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk
 
Nein, tut es nicht. Er macht nach
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;
irgendwie nichts mehr.

Apollonius 26. Apr 2007 17:16

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.

Maikiboy 26. Apr 2007 17:17

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:
    Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geschlossen');
das macht er immer

Delphi-Quellcode:
    Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geöffnet');
und das.

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.
Seite 2 von 3     12 3      

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