Novo - Fr 15.06.07 20:07
Titel: WinSocket Chat funktioniert nicht!
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
Delphi-Quelltext
1:
| ServerSocket1.Socket.Connections[SelectedIP].SendText('chat'); |
sendet und empfangen wird:
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
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 public 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
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 public 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. |