Autor Beitrag
somebody
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167
Erhaltene Danke: 2



BeitragVerfasst: Sa 16.02.08 15:57 
Hi Leute, ich habe mal einen kleinen CHat in Delphi versucht, aber der geht noch nicht so ganz. Also, erstmal habe ich das ausprobiert an meinem Computer was zu schreiben und das es am Computer meiner Eltern(der steht ein Stockwerk tiefer)angezeigt wird, das geht aber nicht. Auch nicht umgekehrt!!! Also nehme ich an, das der Client und de Server du Daten nicht übertragen, aber das komische ist, die Dateien werden nicht beim anderen angezeigt, sondern Bei einem selber dann aber gleich 2 mal hintereinander.
Hier erstmal der Quelltext:

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:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DesignText, XPStyler, ScktComp, Menus, BarMenus, CopyRightInfo;

type
  TForm1 = class(TForm)
    Button1: TButton;
    DesignText1: TDesignText;
    Edit1: TEdit;
    ColorDialog1: TColorDialog;
    Button2: TButton;
    XPStyler1: TXPStyler;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    BcBarPopupMenu1: TBcBarPopupMenu;
    Eintrgelschen1: TMenuItem;
    Edit2: TEdit;
    CopyRightDialog1: TCopyRightDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Eintrgelschen1Click(Sender: TObject);
    procedure ClientSocket1Connecting(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  a: string;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
     CopyrightDialog1.Execute(3000);
     
     ColorDialog1.Color := ClWhite;

     DesignText1.NewDraw;

     ServerSocket1.Port := 12000;

     if ServerSocket1.Active = false then
     begin
          ServerSocket1.Open;
          DesignText1.addTextLine('<c>' + inttostr(ColorDialog1.Color) + '</c>' + 'Server online');
     end;

     if ServerSocket1.Active = true then
     begin
          ClientSocket1.Port := 12000;
          ClientSocket1.Host := 'localhost';
          ClientSocket1.Open;
     end;

     ColorDialog1.Color := ClRed;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     a := Edit1.Text;

     if (ClientSocket1.Active) then
     begin
          ClientSocket1.Socket.SendText('<c>' + inttostr(ColorDialog1.Color) + '</c>' + a)
     end
     else
     begin
          DesignText1.AddTextLine('Nicht Verbunden!');
     end;

     Edit1.Text := '';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     if ColorDialog1.Execute then
     begin
          ColorDialog1.Color := ColorDialog1.Color;
     end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
      if (ClientSocket1.Active)then
      begin
           ClientSocket1.Close;
      end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var MyMessage: String;
    i: Integer;
begin
     MyMessage := Edit2.Text + ': ' + Socket.ReceiveText;

     ColorDialog1.Color := ColorDialog1.Color;
     DesignText1.AddSpeedLine('<c>' + inttostr(ColorDialog1.Color)+ '</c>' + MyMessage);

     for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
     begin
          ServerSocket1.Socket.Connections[i].SendText(MyMessage);
     end;
end;

procedure TForm1.Eintrgelschen1Click(Sender: TObject);
begin
     DesignText1.Clear;
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     ColorDialog1.Color := ClYellow;

     DesignText1.AddTextLine('<c>' + inttostr(ColorDialog1.Color) + '</c>' + 'Verbunden mit ' + 'localhost');

     ColorDialog1.Color := ClRed;
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
      DesignText1.addTextLine('verbindung getrennt');
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
       DesignText1.AddTextLine('<c>' + inttostr(ColorDialog1.Color) + '</c>' + Socket.ReceiveText);
end;

end.


Vielleicht weiß jemand, wie man das behebt.

Achso, DesignText ist eine Komponente, nicht das es da fragen gibt. Fehlermeldungen kommen auch keine, die Daten werden nur nicht übertragen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 17.02.08 00:54 
Moin!

user profile iconsomebody hat folgendes geschrieben:
die Dateien werden nicht beim anderen angezeigt, sondern Bei einem selber
[...]
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm1.FormCreate(Sender: TObject);
[...]
          ClientSocket1.Host := 'localhost';
Nun, du verbindest dich ja auch zu localhost, das ist nun mal der eigene PC. :nixweiss:

Du hast Server und Client in einer Anwendung; das ist zwar nicht "falsch", aber deutlich schwerer, als zwei funktional und logisch getrennte Anwendungen. Vielleicht solltst du das erstmal wie in diesem Tutorial beschrieben versuchen, das scheint mir leichter, als dein Ansatz... :idea:

Wenn du keinen Server haben möchtest, dann schau dir mal den UDP-Chat hier an. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
somebody Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167
Erhaltene Danke: 2



BeitragVerfasst: Sa 23.02.08 19:46 
Dankle für den Tipp, jetzt geht es besser.
Hab ich gar nicht gesehen,d as ich mich einfach nur mit meinem eigen PC verbinde. Sollte ich wohl nächstes mal etwas besser gucken! :lol:

Aber trotzdem danke.