Entwickler-Ecke
Internet / Netzwerk - ServerSocket<->ClientSocket Infos senden und speichern.
User - So 10.09.06 00:49
Titel: ServerSocket<->ClientSocket Infos senden und speichern.
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:
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:
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
matze: Delphi-Tags hinzugefügt
locutus2k5 - 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 - 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 - 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.
Born-to-Frag - 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 [
http://www.delphi-library.de/viewtopic.php?t=54269] ;)
greetz
User - 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 - So 10.09.06 23:13
Also in dem Link den ich dir gegeben hab ist nur ein Protkoll?
greetz
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!