Autor Beitrag
Novo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90

Win XP, Win 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Fr 15.06.07 20:07 
Ich habe eien server.exe und eine client.exe, die mit WinSock kommunizieren.
Ich will ein Chat aufbauen, leider kommt kein Text an (vllt nicht mal verbunden...
auch, wenn es nur Localhost ist! localhost sogar!
Es soll bei Form.Activate verbinden...
Es soll bei server.exe das Fenster Form2.show, wenn Client

ausblenden Delphi-Quelltext
1:
ServerSocket1.Socket.Connections[SelectedIP].SendText('chat');					

sendet und empfangen wird:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
str: string;
begin
str := ClientSocket1.Socket.ReceiveText;

if (str = 'chat'then begin
Form2.show;


Das Senden des Chat open befehls funktioniert, aber der rest nicht!
Was mache ich falsch?
Ich habe eine Andere ClientSocket auf das Chatfenster gezogen und will mit der Connecten... oder Muss ich die von der HauptUnit nehmen, womit ich auch das Chat open Form Command empfangen habe?


server.exe
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:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, Unit1;

type
  TForm2 = class(TForm)
    ClientSocket: TClientSocket;
    chatlog_memo: TMemo;
    nachrichted: TEdit;
    sendenbut: TButton;
    procedure nickbutClick(Sender: TObject);
    procedure sendenbutClick(Sender: TObject);
    procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form2: TForm2;
  nickname: string;
implementation

{$R *.dfm}

procedure TForm2.nickbutClick(Sender: TObject);
begin
nickname := 'Test';
chatlog_memo.Enabled := true;
nachrichted.Enabled := true;
sendenbut.Enabled := true;
end;

procedure TForm2.sendenbutClick(Sender: TObject);
begin
chatlog_memo.Lines.Add(nickname + ' sagt: ' + nachrichted.Text);
ClientSocket.Socket.SendText(nickname + ' sagt: ' + nachrichted.Text);
nachrichted.Text := '';
end;

procedure TForm2.ClientSocketRead(Sender: TObject;Socket: TCustomWinSocket);
var
str: string;
begin
str := ClientSocket.Socket.ReceiveText;
chatlog_memo.Lines.Add(str);
end;

procedure TForm2.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
end;

procedure TForm2.FormActivate(Sender: TObject);
var dyndns:string;
begin
ClientSocket.Host := dyndns;
ClientSocket.Port := 1414;
ClientSocket.Active := true;

end;
end.


client.exe
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:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, Unit1;

type
  TForm3 = class(TForm)
    nicklbl: TLabel;
    nicked: TEdit;
    nickbut: TButton;
    chatlog_memo: TMemo;
    ServerSocket: TServerSocket;
    nachrichted: TEdit;
    sendenbut: TButton;
    procedure nickbutClick(Sender: TObject);
    procedure ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    procedure sendenbutClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;
  nickname: string;
implementation


{$R *.dfm}

procedure TForm3.nickbutClick(Sender: TObject);
begin
nickbut.Enabled := false;
nicked.Enabled := false;
nicklbl.Enabled := false;
nickname := nicked.Text;
end;

procedure TForm3.ServerSocketClientConnect(Sender: TObject;Socket: TCustomWinSocket);

begin
chatlog_memo.Enabled := true;
nachrichted.Enabled := true;
sendenbut.Enabled := true;
end;

procedure TForm3.ServerSocketClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);

begin
ErrorCode := 0;
end;

procedure TForm3.sendenbutClick(Sender: TObject);
var
i: integer;
begin
chatlog_memo.Lines.Add(nickname + ' sagt: ' + nachrichted.Text);
for i:=0 to ServerSocket.Socket.ActiveConnections-1 do begin
ServerSocket.Socket.Connections[i].SendText(nickname + ' sagt: ' + nachrichted.Text);
nachrichted.Text := '';
end;
end;
procedure TForm3.FormActivate(Sender: TObject);
begin
ServerSocket.Port := 1414;
ServerSocket.Active := true;
end;

end.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 15.06.07 23:26 
Moin!

:? Bei dir ist der Client ein Server und der Server ein Client... ? :gruebel: Vermutlich hast du aber auch einfach nur den falschen "Exe-Namen" über den Code geschrieben? :nixweiss:

Aber selbst wenn, dein "Server" hat keine Empfangsmethode, der kann nix von den Clients anzeigen. ;)

Schau mal hier, vielleicht kommst du damit weiter. :les: :D

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.