Autor Beitrag
User
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 10.09.06 00:49 
Hallo ich habe eine Frage. Ich habe zwei Projekte gebaut die auch soweit gut funktionieren. EInerseits einen Server und andererseits einen Clienten. Ich möchte nun das wenn der Client einen Befehl an den Server schickt(Computer Infos holen oder so) diese an einer ganz bestimmten Stelle dargestellt werden zum Beispiel in Memo1. Andererseits möchte ich aber das zum Beispiel die Portinfos also welcher Port gerade genutzt wird in Memo2 gespeichert wird. Also immer abhängig vom Befehl den ich an den Server schicken und von den Daten die er zurückschickt anderst.
Nur leider weis ich nicht wie ich das machen soll. Ich weis wie ich dem Server Befehle erteile und ich weis auch wie ich zum Beispiel die Daten die er mir sendet wie die Computerinfos in einer Memo darstellen kann(Memo1.Lines.Add(Socket.ReceiveText). Aber genau da ist das Problem ich möchte nicht das er alles in diese Memo speichert was anderes soll er mir zum Beispiel durch eine Message zeigen. Doch weis ich nicht wie ich das unterscheiden kann.
Ich hab mir das so gedacht:

Ich sende Befehl an Server:
ClientSocket1.Socket.SendText('GetPCInfo');

Der Server liest dies aus und schickt es dann zurück:
ausblenden Delphi-Quelltext
1:
2:
3:
if Socket.ReceiveText='GetPCInfo' then begin
...
Socket.SendText(GetPCInfo);


Dann emfängt der Client die Daten wieder. Genau hier wird es schwierig.:
Memo1.Lines.Add(ReceiveText);

Das ist die Variante die ich kenne und die geht ich will aber sowas in der Art:
ausblenden Delphi-Quelltext
1:
2:
if Socket.ReceiveText=GetPCInfo then begin
ShowMessage(GetPCInfo);

Das funktioniert nur leider nicht ich will das er jedemal anderst reagieren kann und nicht nur alles in die Memo1 speichert. Ich hoffe ich konnte mich einigermaßen klar ausdrücken. Ich danke euch im Vorraus!!!

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
locutus2k5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33

Windows Vista Ultimate
BDS2005
BeitragVerfasst: So 10.09.06 04:48 
Hi!

Du kannst versuchen den Text den du vom Server zurückbekommst zu parsen. Das heißt in deinem Fall, schritt für schritt auseinander zu basteln.

Bsp: ReciveText = '586 Pentium; 1024 MB RAM; 80 GB HDD';

Daraus kannst du dann mit den nötigen Befehlen drei Teilstrings ausklamüsern, welche du dann nach belieben in einer MessageBox darstellen kannst.
marconist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25

xp sp2
D5 pers
BeitragVerfasst: So 10.09.06 07:08 
Hallo,

du brauchst eine Minimalvariante eines Protokolls. Dafür musst du nur festlegen, woran erkannt wird, dass das Folgende darzustellen ist und woran erkannt wird, das das Folgende auszuführenn ist. Für diese Unterscheidung kann man die Postion der Daten und Trennzeichen heranziehen.

Ein Beispiel ist http, dass dein Browser verwendet, um die Daten vom Server aus zu werten.

Am Anfang steht immer der header. Das Erkennungsmerkmal ist die Position am Anfang unmittelbar nachdem der Browser seine Anforderung gesendet hat. Der http header wird nicht dargestellt, sondern der Browser bezieht Information daraus. Der darzustellende Inhalt folgt nach einer Leerzeile. Die erste Leerzeile ist also das Trennzeichen, das das Erkennungsmerkmal darstellt.

Denkbar sind Varianten mit 2 Trennzeichen, solche mit 2 Positionsmerkmalen bzw 2 verschieden Anforderungen, oder Varianten wie oben 1 Positionsmerkmal und 1 Trennzeichen. Es kommt darauf an, was genau du im Betrieb benötigst.


Den Inhalt von .receivetext kannst du zwischenspeichern und analysieren wie schon gepostet wurde und dann in Abhängigkeit davon verarbeitet werden.

srs
marconist
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: So 10.09.06 10:10 
Ich würde ohne kompliziertes auseinander stückeln versuchen zu arbeiten.
Bau ein kleines Protokoll und schicke jede Info einzelnen, jede Info einen eigenen Befehl.
Also sowas wie Socket.SendText('GetCPUSpeed'); usw.

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: So 10.09.06 10:39 
@Fighter: Würd ich nicht machen, bringt ja nix weil der Client dann tortzdem 2Sachen zurückschicken muss: 'CPUSpeed;' + <CPUSpeed>. Oder woher weiß der Server, dass das der CPU Speed ist? Also ich würde mich da nicht drauf verlassen das der Client mir dann den CPU Speed sofort schickt..

Lieber ein Protokoll: hier ;)


greetz

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
User Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 10.09.06 23:06 
Okay ich danke euch. Aber nun kommt ein Problem auf mich zu nämlich das Protokoll schreiben. Naja gut ich probiere es mal ich hab mir den Link mal angeguckt aber naja ich sehe da viele Tutorials aber so genau weis ich nicht welches ich da nehmen soll wäre nett wenn mir einen den direkten Link geben könnte, da ich leider noch nicht so die Ahnung von Delphi habe.
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: So 10.09.06 23:13 
Also in dem Link den ich dir gegeben hab ist nur ein Protkoll?


greetz

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.