AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Socket-Text an mehrere Rechner nacheinander im Netzwerk send
Thema durchsuchen
Ansicht
Themen-Optionen

Socket-Text an mehrere Rechner nacheinander im Netzwerk send

Offene Frage von "Maikiboy"
Ein Thema von Maikiboy · begonnen am 25. Apr 2007 · letzter Beitrag vom 9. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
Maikiboy

Registriert seit: 25. Apr 2007
14 Beiträge
 
#1

Socket-Text an mehrere Rechner nacheinander im Netzwerk send

  Alt 25. Apr 2007, 11:07
Hallo,

Ich hab ein kleines Netzwerkverwaltungstool geschrieben, ist nichts grosses ohne grosse Spielerein.

Ich wähle die IP's ganz einfach aus ner Listbox und wähle die Aktion. Nun will ich aber das alle Rechner nacheinander aus der ListBox Text gesendet bekommen.

Eine Schleife durchläuft auch ganz gut die Listbox, aber irgendwie kommt nie was beim "Server" an.

Delphi-Quellcode:
procedure TForm1.MassSend(Command:String);
begin;
  ListIp.ItemIndex := 0;
  AllCommand := Command;
  AllCommandTimer.Enabled := true;
end;

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');
//das gibt er immer aus
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');
//das gibt er immer aus
  
    Memo1.Lines.Add('Socket zu ' + tempip + ' nicht geöffnet');
  end;
  try
    Client.Socket.SendText(AllCommand);
    Memo1.Lines.Add('IP ' + tempip + ' erfolgreich');
//das gibt er immer aus
  
    Memo1.Lines.Add('IP ' + tempip + ' nichterfolgreich');
  end;
  ListIp.ItemIndex := ListIp.Itemindex + 1;
  if (ListIp.ItemIndex >= ListIp.Count) then
    AllCommandTimer.Enabled := False;
end;
Ist kein guter Quelltext, ich weis aber wie gesagt, sollte nichts grosses sein daher bissel Spaghetti Code.


gruss und schonmal DAnke

Maik
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:11
du schreibst das die schleife die Listbox durchläuft. Aber im Quelltext ist nirgends eine Schleife zu sehen sondern nur das du den ItemIndex auf 0 setzt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Maikiboy

Registriert seit: 25. Apr 2007
14 Beiträge
 
#3

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:20
Naja, nicht wirklich ne Schleife
Das war mein erster Ansatz, den ich aber verworfen hatte weil ich dachte das das zwecks anti spam oder so net geht, was eigentlich auch blödsinn ist

Jetzt ist es folgendermassen:

Beim Click auf den Button wird ein Timer aktiviert der jede Sekunde durchläuft.

So, bei onTimer wird dann der ItemIndex jeweils 1 höher gemacht und die entsprechenden befehle werden gesendet.

also praktisch ne TimerSchleife

gruss Maik
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:26
was versuchst du eigentlich mit dem "try" zu erreichen? Was ist der Sinn davon?
wenn du
Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geschlossen'); UND
Memo1.Lines.Add('Socket zu ' + tempip + ' konnte nicht geschlossen werden'); direkt hintereinander aufrufst wird logischer Weise auch beides hintereinander gemacht.
Nur seh ich eben den Sinn nicht warum du 2 gegensetzliche Meldungen ausgibst.

Das ist wie die Aussage: "Der Erde ist eine Scheibe und die Erde ist Rund und die Erde ist eine Elypse und die Erde existiert gar nicht"
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Maikiboy

Registriert seit: 25. Apr 2007
14 Beiträge
 
#5

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:29
rofl

OK, das war mein Fehler

Hatte was falsch gepastet weil ich die kommentare noch fett machen wollte.
So ist er eigentlich:

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;
  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;
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:31
wenn schon dann so

Delphi-Quellcode:

procedure TForm1.AllCommandTimerTimer(Sender: TObject);
var tempip:String;
begin
  tempip := ListIp.Items[ListIp.Itemindex];
  try
    Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geschlossen');
    Client.Close;
  except
    Memo1.Lines.Add('Socket zu ' + tempip + ' konnte nicht geschlossen werden');
  end;
  Client.Host := tempip;
  try
    Memo1.Lines.Add('Socket zu ' + tempip + ' erfolgreich geöffnet');
    Client.Open;
  except
    Memo1.Lines.Add('Socket zu ' + tempip + ' nicht geöffnet');
  end;
  try
    Memo1.Lines.Add('IP ' + tempip + ' erfolgreich');
    Client.Socket.SendText(AllCommand);
  except
    Memo1.Lines.Add('IP ' + tempip + ' nichterfolgreich');
  end;
  ListIp.ItemIndex := ListIp.Itemindex + 1;
  if (ListIp.ItemIndex >= ListIp.Count) then
    AllCommandTimer.Enabled := False;
end;
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Maikiboy

Registriert seit: 25. Apr 2007
14 Beiträge
 
#7

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:31
Jop, so ist es auch bzw. so hab ichs eben geändert.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:33
jetzt wäre es noch sinnvoll zu wissen von welchem Typ Client ist und mit welcher Meldung er abbricht.
@Gruber_Hans_12345: Beim besten willen, aber so ist es falsch. Denn so würde die Meldung das es erfolgreich war auch kommen wenn ein Fehler kam und anschließend kommt noch die Meldung das es nicht erfolgreich war. Also widersprüchlich!
Und es macht ja nicht wirklich sinn generell erstmal eine Erfolgsmeldung auszugeben und erst danach den Befehl wirklich auszuführen der dann am Ende eventuell gar nicht erfolgreich ausgeführt wurde.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Maikiboy

Registriert seit: 25. Apr 2007
14 Beiträge
 
#9

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 11:37
Client ist vom Typ TClientSocket

Nochma der aktuelle QCode:

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;
  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;

Zitat:
Es sind zwischenzeitlich neue Beiträge zu diesem Thread hinzugekommen oder es wurden welche editiert.
Vielleicht magst Du einen Blick auf die Themen-Vorschau (unten auf dieser Seite) werfen und die neuen Beiträge ggf. berücksichtigen. Neue bzw. editierte Beiträge sind farblich hervorgehoben.
An die Macher: Das ist doch mal eine geile Funktion!

Abbrechen tut er mit nem asynchronen Socketfehler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Socket-Text an mehrere Rechner nacheinander im Netzwerk

  Alt 25. Apr 2007, 12:53
Und auf der anderen Seite gibt es wirklich einen TServersocket, der auf dem selben Port lauscht?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz