![]() |
Client Server Befehle funktionieren nicht ???
hab da so einen code ein bißchen umgeschrieben aber der server führt
die Befehle nicht aus , warum ??? client code
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Clientsocket1.Active := True; end; procedure TForm1.Button2Click(Sender: TObject); begin Clientsocket1.Active := False; end; procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin errorcode := 0; StatusBar1.SimpleText := 'Error'; end; procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin StatusBar1.SimpleText := 'Disconnect'; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin StatusBar1.SimpleText := Clientsocket1.Address; end; procedure TForm1.Button3Click(Sender: TObject); var ukaz : string; orders : string; Text : string; box : string; begin ukaz := edit1.Text; Clientsocket1.Socket.SendText(ukaz); if checkbox1.Checked = True then begin orders := 'power'; Clientsocket1.Socket.SendText(orders); end; if Checkbox2.Checked = True then begin Text := 'reset'; Clientsocket1.Socket.SendText(Text); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Clientsocket1.Active := False; end; procedure TForm1.FormDestroy(Sender: TObject); begin Clientsocket1.Active := False; end; end. server code
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin Serversocket1.Active := False; end; procedure TForm1.FormDestroy(Sender: TObject); begin Serversocket1.Active := False; end; procedure TForm1.FormCreate(Sender: TObject); begin Serversocket1.Active := True; end; procedure TForm1.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin errorcode := 0; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var ukaz : string; orders : string; Text : string; box : string; begin ukaz := socket.ReceiveText; label1.Caption := 'reciving...'; ShellExecute(Handle, 'open', PChar(ukaz), PChar(''), nil, sw_show); Text := socket.ReceiveText; orders := socket.ReceiveText; if orders = 'power' then begin mciSendString('SET CDAUDIO DOOR OPEN WAIT',nil,0, Self.Handle); //Öffnen Form1.Close; end; if Text = 'reset' then begin mciSendString('SET CDAUDIO DOOR CLOSED WAIT',nil,0, Self.Handle); //Schließen Serversocket1.Active := False; Form1.Close; end; end; end. mfg vader [edit=r_kerber]Code- durch Delphi-Tags ersetzt. Mfg, r_kerber[/edit] |
Re: Client Server Befehle funktionieren nicht ???
Ich weiß ja nicht welches OS du hast, aber auf NT funktioniert das Auswerfen der CD-Laufwerke nicht :(
Könnte eine möglichkeit sein! ;) Gruß Christopher |
Re: Client Server Befehle funktionieren nicht ???
hab derzeit ME od "Mülllenium" auf meiner Kiste.
mfg vader |
Re: Client Server Befehle funktionieren nicht ???
vielleicht fehlt ein +#13#10 hinter den SendText's
|
Re: Client Server Befehle funktionieren nicht ???
du solltest den Text mal ausgeben, den der Server empfängt.
es kann nämlich gut sein, dass z.B. sowas ankommt: MeinTextpower und dann erkennt er natürlich die Befehle nicht mehr. Ich habe soetwas mit Cues und Bestätigungsnachrichten gelöst. |
Re: Client Server Befehle funktionieren nicht ???
das event OnClientRead wird ausgelöst wenn da daten zum empfangen anstehen, mit socket.ReceiveText holst du sie dir.
also was wird der zweite und dritte aufruf bringen? Minz hat ebenfalls recht, mehrmals direkt hintereinander sendtext löst beim empfänger nur einmal das event mit dem gesamten text aus... aber sicher is das auch nicht, also z.b. vor dem text dessen länge senden, der empfänger empfängt dann so lange bis länge voll ist, und dan erst wertet er es als befehl aus |
Re: Client Server Befehle funktionieren nicht ???
hätte eine frage brauch ich diese programmzeile im client überhaupt:
ukaz := edit1.Text; Clientsocket1.Socket.SendText(ukaz); und diese im server : ukaz := socket.ReceiveText; label1.Caption := 'reciving...'; welche funktionen hat dieser code ??? mfg vader |
Re: Client Server Befehle funktionieren nicht ???
du könntest auch schreiben:
Clientsocket1.Socket.SendText(edit1.text); ukaz ist nur ein Platzhalter, den du auch Taschentuch nennen könntest. Welche Funktion SendText hat, dürfte sich eigentlich selber erklären. Genauso ReceiveText... Wenn da noch etwas unklar sein sollte, müsstest du das spezifizieren. |
Re: Client Server Befehle funktionieren nicht ???
Funktion SendText versteh ich schon, aber was soll das mit Platzhalter
und Taschentuch ??? wenn ich ukaz := edit1.Text; Clientsocket1.Socket.SendText(ukaz); weglassen würde würde das dann auch funktionieren od. brauch ich diesen Platzhalter ??? Das versteh ich nicht. mfg vader |
Re: Client Server Befehle funktionieren nicht ???
Wenn du Text senden willst brauchst du natürlich SendText
ich sagte bereits: du kannst auch ...SendText(edit1.text) schreiben weißt du was edit1.text bedeutet? Wenn ukaz gleich edit1.text ist kannst du also auch schreiben SendText(ukaz) weil ukaz=edit1.text ukaz ist dabei eine Variable, edit1 ist eine Komponente auf deinem Formular mit der Eigenschaft Text. ukaz kannst du daher auch egalwie nennen z.B. Taschentuch Wenn du das nicht verstehst guck dir Tutorials zum Thema Variablendeklaration an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz