Client-Server --- server verareitet befehle

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

Client-Server --- server verareitet befehle

Beitrag von Pure-r-Freak »

diesmal würde ich gerne wissen wie man z.b. durch SendNetworkString() einen "befehl" an einen server schicken kann, der dann auch ausgeführt wird.

Bsp.
Client-> SendNetworkString(Hallo.exe)
Server-> startet Hallo.exe

:freak: :freak: :allright: Danke
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag von Leo »

Der Client sendet "run:Hello.exe"
Der Server guckt jetz mit Mid(receivedstring.s,0,3) ob da ein run
steht und schneidet sich mit Mid den Parameter, also das Hello.exe
rauß (Mid(receivedstring.s,5,Len(receivedstring.s)-3)
und führt RunProgram(parameter.s) aus
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

Beitrag von Pure-r-Freak »

danke für deine antwort, aber ich bekomme das irgendwie nicht hin
könnte mir vielleicht jemand ein Beispiel posten ?

:freak: :allright:
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag von pogi02 »

Was bringst da net zusammen es ist ganz einfach.

Du sendest einfach ein Schlüsselwort.

z.B.

SendNetworkString(ClientID, ".runprog|datei.exe")

Dann lässt du denn Server prüfen ob das Schlüsselwort .runprog gesendet wurde und Mittels StringField(massage$, Index, "|") liest du aus um welchen Programm es sich handelt.

Das Schlüsselwort kannst du z.B. mit Left prüfen.

Ganze Funktion sieht dann ca. so aus

If Left(massage$, 8 ) = ".runprog"
programm$ = StringField(massage$, 1, "|")
EndIf

Ist natürlich nur schnell gemacht aber so dürfte es einigermassen funktionieren.
OptimusPrime
Beiträge: 43
Registriert: 07.03.2005 16:52

eventuell..

Beitrag von OptimusPrime »

wäre es wichtig, zu erklären, dass der client nicht einen "Befehl" senden kann,
z.b. :
wenn du ein programm vom client starten möchtest, reicht es nicht,
den programmnamen "beispiel.exe" zu senden und der server führt das programm aus.

du musst dir also überlegen, welches "schlüsselwort" der client zusammen mit dem programmnamen "beipspiel.exe" sendet (vielleicht auch als 2. variable", damit der server nun weiss, dass er das programm beispiel.exe ausführen soll.

dafür machst du dann eine abfrage, das schlüsselwort kann ja sein, was du möchtest, kann auch nur eine zahl oder ein buchstabe sein.
du kannst das theoretisch auch ganz weglassen, allerdings würde der

server dann bei allen daten, die er bekommt, immer versuchen, diese als
programm auszuführen....;o)

wichtig ist auch, dass der server weiss, in welchem verzeichnis sich das zu startende programm befindet, also entweder hast du ein festes verzeichnis, dessen pfad der server kenn, oder du musst den pfad noch vom vclient mitsenden.

merke dir nur, du kannst keine direkten befehle senden, nur Strings$ oder andere Variablen (Zehlaen, Binärcode etc), was der Server am ende damit macht, dass liegt an dem programm, dass du dafür geschrieben hast.

mfg
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Re: eventuell..

Beitrag von pogi02 »

OptimusPrime hat geschrieben:wäre es wichtig, zu erklären, dass der client nicht einen "Befehl" senden kann,
z.b. :
wenn du ein programm vom client starten möchtest, reicht es nicht,
den programmnamen "beispiel.exe" zu senden und der server führt das programm aus.

du musst dir also überlegen, welches "schlüsselwort" der client zusammen mit dem programmnamen "beipspiel.exe" sendet (vielleicht auch als 2. variable", damit der server nun weiss, dass er das programm beispiel.exe ausführen soll.

dafür machst du dann eine abfrage, das schlüsselwort kann ja sein, was du möchtest, kann auch nur eine zahl oder ein buchstabe sein.
du kannst das theoretisch auch ganz weglassen, allerdings würde der

server dann bei allen daten, die er bekommt, immer versuchen, diese als
programm auszuführen....;o)

wichtig ist auch, dass der server weiss, in welchem verzeichnis sich das zu startende programm befindet, also entweder hast du ein festes verzeichnis, dessen pfad der server kenn, oder du musst den pfad noch vom vclient mitsenden.

merke dir nur, du kannst keine direkten befehle senden, nur Strings$ oder andere Variablen (Zehlaen, Binärcode etc), was der Server am ende damit macht, dass liegt an dem programm, dass du dafür geschrieben hast.

mfg
Hää???

Das ist doch das was ich beschreiben hab zuerst prüft der server ob ein solcher befehl rein kommt

If Left(massage$, 8 ) = ".runprog"

und das erste was hinter dem | dann steht ist das programm das er ausführen soll

programm$ = StringField(massage$, 1, "|")

wenn er es in dieser form sendet SendNetworkString(ClientID, ".runprog|datei.exe")
Antworten