Counter909 - So 10.08.08 15:29
Titel: String über Lan verschicken
HI
also ich habe ein kleines Programm geschrieben, was im Netzwerk nun als erstes einem ermöglicht zu Chatten. Das hab ich mit Tserversocket und Tclientsocket alles programmiert und gab auch weiter keine Probleme.
Jetzt möchte ich dieses Programm natürlich noch etwas ausschmücken und immer erweitern, Könnte langsam einem Remote Administration Tool innerhalb eines Netzwerkes ähneln. Doch jetzt hab ich überall Probleme, wo es darum geht, wenn ich einen Befehl dem Server schicke, der dann z.B eine Funktion ausführt. (z.B. die Laufwerksbuchstaben ermitteln) und dann das Ergebnis zurückgeschickt werden soll....
in diesem Moment werden ja mehrere Strings zurückgeschickt und kann deshalb nicht mit sendtext, etc arbeiten. Wie muss ich denn da vorgehen, damit vom server alle ergebnisse "zusammengepackt" werden und ich sie mit dem Client dann wieder "zerlegen" und zum Beispiel in eine Listview wiedergeben kann ???
vllt. kann das einer an Hand der Laufwerksbuchstaben erklären.
Der Client sendet also ein Befehl:
Delphi-Quelltext
1:
| socket.sendtext('laufwerbuchstaben'); |
Der Server erhält die Nachricht:
und nun wird die Funktion ausgeführt:
result= a,b,c,d,h,j /das sind jetzt meinetwegen die Laufwerksbuchstaben
wie werden die jetzt zurückgeschickt, damit ich sie beim client gut darstellen kann ?
mfg
counter
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
Sinspin - So 10.08.08 17:08
Hi und :welcome: in der EE.
Ich verstehe gerade nicht, was daran so schwehr sein soll mehr als einen String als Antowrt zurück zu senden. Entweder sendest du halt alles nacheiander via SendText schließlich muss eine Antwort ja nicht immer nur aus einem SendText bestehen.
Oder du hängst einfach alle Strings aneinander. Was eingentlich ganz komfortabel über eine Stringliste geht.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure SendAll; var sl: TStringListe;
begin sl := TStringList.Create; try sl.Add('A'); sl.Add('B'); sl.Add('C'); server.SendText(sl.Text); finally sl.Free; end; end;
procedure GetAll(aReceivedText: string); var sl: TStringListe;
begin sl := TStringList.Create; try sl.Text := aReceivedText; sl.Strings[0] sl.Strings[1] sl.Strings[2] finally sl.Free; end; end; |
Auf diese Art sind alle Daten mit einem String gekommen und können gut weiterverarbeitet werden.
Narses - So 10.08.08 23:18
Moin!
Sinspin hat folgendes geschrieben: |
Oder du hängst einfach alle Strings aneinander. Was eingentlich ganz komfortabel über eine Stringliste geht.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| sl := TStringList.Create; try sl.Add('A'); sl.Add('B'); sl.Add('C'); server.SendText(sl.Text); | Auf diese Art sind alle Daten mit einem String gekommen und können gut weiterverarbeitet werden. |
Achtung! Das klappt nur, wenn
sl.Text kleiner als 8KB ist. :idea:
Eine davon unabhängige Lösung ist ein Protokoll, aber das entsprechende Tut ist ja schon oben gelinked. ;)
cu
Narses