|
Registriert seit: 3. Okt 2008 53 Beiträge |
#1
Ich hab hier mal versucht einen Chat zu schreiben. Wenn etwas nicht geht sollte ein Error-Code rauskommen. Hat sich der Client erfolgreich connected, so sollte auch eine Meldung kommen das man connected ist. Leider bekomme ich keinen Error-Code und ich sehe auch gar nicht ob sich der client connected hat oder nicht. Nachrichten empfängt der Server keine bzw. der Client sendet keine o.O
Hier habe ich mal den gesammten Code vom Server und vom Client gepostet. Es wäre sehr nette wenn jemand den mal durchgeht und mir meinen Fehler sagen könnte -.- sitze schon 2 Tage davor und find nix... SERVER
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, ScktComp; type TChatNachricht = Record nick: string[255]; chat: string[255]; state: string[255]; end; type TForm1 = class(TForm) Label1: TLabel; Memo1: TMemo; chat: TEdit; send: TButton; XPManifest1: TXPManifest; GroupBox1: TGroupBox; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Edit2: TEdit; kick: TButton; GroupBox2: TGroupBox; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; GroupBox3: TGroupBox; Edit3: TEdit; Label26: TLabel; Label27: TLabel; port: TEdit; startserver: TButton; kickall: TButton; exit: TButton; Label28: TLabel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; ssocket: TServerSocket; procedure sendClick(Sender: TObject); procedure exitClick(Sender: TObject); procedure startserverClick(Sender: TObject); procedure ssocketclientread(Sender: TObject; Socket: TCustomWinSocket); procedure ssocketClientConnect (Sender: TObject; Socket: TCustomWinSocket); procedure ssocketClientDisconnect (Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} {******************* ************************************** ****************************} procedure TForm1.ssocketClientConnect (Sender: TObject; Socket: TCustomWinSocket); var Nachricht: TChatNachricht; var I: Integer; begin Memo1.Lines.Add ('State: New Client has connected'); Nachricht.Nick := 'Server'; Nachricht.state := 'chat'; Nachricht.chat := 'Welcome'; Socket.SendBuf (Nachricht, SizeOf(Nachricht)); with ssocket.Socket do begin Nachricht.Nick := 'Server'; Label3.Caption := IntToStr (ActiveConnections); Nachricht.chat := 'Now ' + IntToStr(ActiveConnections) + ' User'; for I := 0 to ActiveConnections-2 do Connections[I].SendBuf (Nachricht, SizeOf(Nachricht)) end; end; procedure TForm1.ssocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add ('State: Client disconnected' + ' - Sockets: ' + IntToStr(ssocket.Socket.ActiveConnections)); Label3.Caption := IntToStr (ssocket.Socket.ActiveConnections-1); end; {******************* ************************************** ****************************} procedure TForm1.startserverClick(Sender: TObject); begin if startserver.caption = 'Stop Server' then begin ssocket.Active := false; label28.Color := clred; label28.Caption := 'Server Offline'; startserver.caption := 'Start Server'; Memo1.lines.SaveToFile('pokerchat-log.txt'); ssocket.Active := false; end else if startserver.caption = 'Start Server' then begin ssocket.active := false; ssocket.Port := strtoint (port.text); label28.Color:= clgreen; label28.Caption := 'Server Online'; startserver.Caption := 'Stop Server'; ssocket.active := true; end; end; procedure TForm1.exitClick(Sender: TObject); begin close; end; //------------- SERVER ON READ ----------------------------------------------------------------- procedure TForm1.ssocketClientRead (Sender: TObject; Socket: TCustomWinSocket); var Nachricht: TChatNachricht; I: Integer; begin Socket.ReceiveBuf (Nachricht, SizeOf(Nachricht)); if (Nachricht.state = 'newuser') then begin Memo1.Lines.Add (Nachricht.Nick + ' has connected'); with ssocket.Socket do begin for i := 0 to ActiveConnections-1 do Connections[I].SendBuf (Nachricht, SizeOf(Nachricht)) end; end; if (Nachricht.state = 'chat') then begin Memo1.Lines.Add (Nachricht.Nick + ': ' + Nachricht.chat); {Send to all} with ssocket.Socket do begin for i := 0 to ActiveConnections-1 do Connections[I].SendBuf (Nachricht, SizeOf(Nachricht)) end; end; end; //------------- CHAT SENDEN ----------------------------------------------------------------- procedure TForm1.sendClick(Sender: TObject); var Nachricht: TChatNachricht; i: integer; begin if (ssocket.active) then begin nachricht.state := 'chat'; nachricht.chat := chat.text; nachricht.nick := 'Server:'; with ssocket.Socket do begin for i := 0 to ActiveConnections-1 do Connections[I].SendBuf (Nachricht, SizeOf(Nachricht)) end; end else begin memo1.lines.add('Not connected!'); end; end; end. CLIENT
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, XPMan, ScktComp; type TChatNachricht = Record nick: string[255]; chat: string[255]; state: string[255]; end; type TForm1 = class(TForm) Label1: TLabel; connect: TButton; ip: TEdit; Label2: TLabel; port: TEdit; Label3: TLabel; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; GroupBox3: TGroupBox; Edit3: TEdit; GroupBox4: TGroupBox; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; sclient: TClientSocket; Button7: TButton; XPManifest1: TXPManifest; Memo1: TMemo; chat: TEdit; send: TButton; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; nick: TEdit; procedure sendClick(Sender: TObject); procedure connectClick(Sender: TObject); procedure Button7Click(Sender: TObject); procedure sclientconnect (Sender: TObject; Socket: TCustomWinSocket); procedure sclientread (Sender: TObject; Socket: TCustomWinSocket); procedure sclientconnecting (Sender: TObject; Socket: TCustomWinSocket); procedure sclienterror (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure sclientlookup (Sender: TObject; Socket: TCustomWinSocket); procedure sclientdisconnect (Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button7Click(Sender: TObject); begin close; end; //--------------------------------------------------------------------------------------------------------- procedure TForm1.sclientlookup(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add ('State: Searching Server'); end; procedure TForm1.sclientConnecting(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add ('State: Connecting...'); end; procedure TForm1.sclientconnect (Sender: TObject; Socket: TCustomWinSocket); var Nachricht: TChatNachricht; begin Memo1.Lines.Add ('State: Connected'); Nachricht.nick := nick.Text; Nachricht.state := 'newuser'; sclient.Socket.SendBuf (Nachricht, SizeOf(Nachricht)); Memo1.Lines.Add(nick.Text); end; procedure TForm1.sclientError (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Memo1.Lines.Add ('State: Error ' + IntToStr(ErrorCode)); ErrorCode := 0; end; procedure TForm1.sclientdisconnect(Sender: TObject; Socket: TCustomWinSocket); var Nachricht: TChatNachricht; begin Memo1.Lines.Add ('State: Disconnected'); end; //*********************************** Client READ ********************************************************** procedure TForm1.sclientRead (Sender: TObject; Socket: TCustomWinSocket); var Nachricht: TChatNachricht; begin Socket.ReceiveBuf (Nachricht, SizeOf(Nachricht)); if (Nachricht.state = 'chat') then begin Memo1.Lines.add (Nachricht.nick+': '+Nachricht.chat); end; end; //--------------------------------------------------------------------------------------------------------- procedure TForm1.connectClick(Sender: TObject); var Nachricht :TChatNachricht; begin if connect.caption = 'Connect' then begin sclient.Host := ip.text; sclient.Port := strtoint(port.text); ip.Enabled := false; port.Enabled := false; nick.Enabled := false; sclient.Active := true; //Nachricht.nick := nick.text; //Nachricht.state := 'newuser'; //sclient.Socket.SendBuf (Nachricht, SizeOf(Nachricht)); */ connect.caption := 'Disconnect'; end else if connect.caption = 'Disconnect' then begin sclient.Active := false; ip.Enabled := true; port.Enabled := true; nick.Enabled := true; connect.caption := 'Connect'; Memo1.Lines.SaveToFile('Pokerchat-log.txt'); end; end; //------------- Client Send ----------------------------------------------------------------- procedure TForm1.sendClick(Sender: TObject); var Nachricht: TChatNachricht; begin if (sclient.active) then begin nachricht.state := 'chat'; nachricht.chat := chat.text; nachricht.nick := nick.text; sclient.Socket.SendBuf (Nachricht, SizeOf(Nachricht)); chat.Text := ''; end else begin memo1.lines.add('Not connected!'); end; end; end. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |