Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Client Server Befehle funktionieren nicht ??? (https://www.delphipraxis.net/15200-client-server-befehle-funktionieren-nicht.html)

Vader 23. Jan 2004 19:07


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]

chris01 23. Jan 2004 21:13

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

Vader 23. Jan 2004 21:49

Re: Client Server Befehle funktionieren nicht ???
 
hab derzeit ME od "Mülllenium" auf meiner Kiste.

mfg vader

Pseudemys Nelsoni 23. Jan 2004 22:07

Re: Client Server Befehle funktionieren nicht ???
 
vielleicht fehlt ein +#13#10 hinter den SendText's

Minz 23. Jan 2004 23:37

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.

Currywurst 24. Jan 2004 07:04

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

Vader 24. Jan 2004 13:18

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

Minz 24. Jan 2004 14:33

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.

Vader 24. Jan 2004 14:56

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

Minz 25. Jan 2004 01:07

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.
Seite 1 von 2  1 2      

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