Autor Beitrag
cux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Di 25.01.05 18:16 
Moin Leute!

Ich will ein Spiel programmieren, dass man im Netzwerk spielen kann.
Dazu muss ich es aber erst einmal hinkriegen, dass Daten zwischen Server und Client versendet werden.
Mein momentanes Programm sieht so aus:

Das ist der Server:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer;

type
  Tserver = class(TForm)
    Server: TIdTCPServer;
    Memo1: TMemo;
    Button1: TButton;
    procedure ServerConnect(AThread: TIdPeerThread);
    procedure ServerDisconnect(AThread: TIdPeerThread);
    procedure ServerExecute(AThread: TIdPeerThread);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  server: Tserver;

implementation

{$R *.dfm}

procedure Tserver.ServerConnect(AThread: TIdPeerThread);
begin
  memo1.Lines.Add('client connect')
end;

procedure Tserver.ServerDisconnect(AThread: TIdPeerThread);
begin
  memo1.Lines.Add('client disconnect')
end;

procedure Tserver.ServerExecute(AThread: TIdPeerThread);
var a: String;
begin
  a:= AThread.Connection.ReadLn;
  AThread.Connection.WriteLn('Hallo '+a);
end;

procedure Tserver.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  server.Active:= false;
end;

end.



Und das ist der Client:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, ExtCtrls;

type
  Tclient = class(TForm)
    Memo1: TMemo;
    Client: TIdTCPClient;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  client: Tclient;

implementation

{$R *.dfm}

procedure Tclient.Button1Click(Sender: TObject);
begin
  client.Connect;
  client.WriteLn(edit1.Text);
  memo1.Lines.Add(client.ReadLn);
end;

procedure Tclient.Button2Click(Sender: TObject);
begin
  client.Disconnect;
end;

end.


Soweit funtioniert das Programm auch! Wenn der client conected gibt det server einen hinweis ins memo aus und sendet dem clienten eine nachricht!

Es können sich auch mehrere Clienten an den Server andoggen.

Ich möchte jetzt eine nachricht vom server an alle clienten senden, die gerade mit dem server verbunden sind, wenn ich z.b. auf einen Button beim Server klicke! Wie geht so etwas?

cux
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 26.01.05 19:08 
www.dsdt.info/tutorials/indy/?page=2
Hab mirs noch nich durchgelesen :wink:
cux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mi 26.01.05 19:25 
Coder hat folgendes geschrieben:
www.dsdt.info/tutorials/indy/?page=2
Hab mirs noch nich durchgelesen :wink:


Danke,

aber da steht auch nicht viel drinnen!
Das Problem ist, glaube ich, dass der Server NUR auf eine Nachricht von einem Client reagieren kann! Er kann nicht von sich aus etwas schicken!
Kann das sein? Oder geht das vielleicht doch anders?

cux
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 26.01.05 19:31 
Ka, aber da steht doch, das es da auch eine Indy-Demo dazu gibt. :wink:

Zitat:
Bei den Indy-Demos befindet sich dazu ein kleines Beispielprojekt (Verzeichnis BasicClientServer), bestehend aus zwei Anwendungen, dem Client und dem Server.


Edit: Hier gibts die Demos > www.indyproject.org/...load/Files/Indy9.iwp
cux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Do 27.01.05 09:35 
das ding ist nur, dass ich indy10 habe! und die domos von indy 9 kann ich nicht öffnen!
aber wenn jemand noch indy9 hat, wäre richtig cool, wenn er dann den code von der demo hier posten kann! damit dann ich dann bestimmt was anfangen, und dann schreib ich das für indy10 um!

cux