Einzelnen Beitrag anzeigen

noobkovski

Registriert seit: 17. Nov 2008
1 Beiträge
 
#82

Re: Einen Chat mit den Sockets programmieren

  Alt 17. Nov 2008, 20:54
hey , hab das gefühl da fehlt was in der PDF kam damit nicht ganz klar,


Client:
Delphi-Quellcode:
unit delchat;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AppEvnts, ScktComp, ExtCtrls, StdCtrls, IdBaseComponent,
  IdComponent, IdIPWatch;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Timer1: TTimer;
    ClientSocket1: TClientSocket;
    ApplicationEvents1: TApplicationEvents;
    IdIPWatch1: TIdIPWatch;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Delay(time: word);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Nickname,Nachricht:string;

implementation

{$R *.dfm}
procedure TForm1.delay(time:word);
var Start: Integer;
begin
Start:=GetTickCount;
while (GetTickCount)-(Start) <= time do
Application.ProcessMessages;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label6.Caption:=IdIPWatch1.LocalIP; //Damit oben im Fenster schon beim FormCreate die aktuelle IP-Adresse angezeigt wird
Button1.Enabled:=false;//Damit man nicht schon vorher draufdrückt
Button2.Enabled:=false;// -''-
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Nickname:=Edit3.Text;
Button3.Enabled:=false;
Edit3.Enabled:=false;
Button2.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Host:=Edit2.Text;
ClientSocket1.Active:=true;
Button2.Enabled:=false;
Edit2.Enabled:=false;
Button1.Enabled:=true;
Nachricht:=Edit3.Text+' hat den Raum betreten';
delay(500);
ClientSocket1.Socket.SendText(Nachricht);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if (ClientSocket1.Active=true) and (Edit1.Text<>'') then
ClientSocket1.Socket.SendText(NickName+': '+Edit1.Text);
Edit1.Text:='';
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label6.Caption:=IdIPWatch1.LocalIP;
end;

end.

Server:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    ServerSocket1: TServerSocket;
    IdIPWatch1: TIdIPWatch;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
begin
label2.caption:=IdIPWatch1.LocalIP;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var Text:string;
i: Integer;
begin
Text:=Socket.ReceiveText;
Memo1.Lines.add(Timetostr(now)+': '+Text);
For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections [I] do
if (Connected) then SendText(Text);
end;
end;


end.


könntet ihr mir vll . noch sagen was dort noch fehlt damits erstmal funktioniert ?!
vielen dank im voraus, und sorry wenn es totaler schwachsinn ist, der dort steht
  Mit Zitat antworten Zitat