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:
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 public 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:
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 public 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