AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Einen Chat mit den Sockets programmieren
Tutorial durchsuchen
Ansicht
Themen-Optionen

Einen Chat mit den Sockets programmieren

Ein Tutorial von Ultimator · begonnen am 5. Mai 2004 · letzter Beitrag vom 30. Jan 2014
Antwort Antwort
Seite 9 von 11   « Erste     789 1011      
Benutzerbild von Ultimator
Ultimator
Registriert seit: 17. Feb 2004
So, hier nun mein erstes Tutorial: Wie baue ich mir einen Chat

Es geht darum, wie man einen Chat mit einem zentralen Server mit den Sockets baut. Es werden dabei TClientSocket und TServerSocket verwendet. Sollte es auf genügend positive Resonanz stoßen, würde ich mich eventuell bereiterklären, weitere Tutorials zu schreiben.Bitte meldet mir (Tipp-)Fehler und weiteres, damit ich es immer weiter ausbauen und verbessern kann. Ich wäre für jede Kritik (und natürlich auch jedes Lob) sehr dankbar. Genug geredet, hier ist es nun endlich.

[edit]Da bei manchen Leuten der Download nicht zu funktionieren scheint, probiert es mal mit "Ziel speichern unter". Alternativ dazu habe ich hier noch den Link zu der Datei auf meinem Webspace: http://home.arcor.de/ultimator/Chat-Tutorial_1.1.pdf

[edit=Phoenix]Tutorial aktualisiert. Mfg, Phoenix[/edit]
Angehängte Dateien
Dateityp: pdf chat-tutorial_1.1_123.pdf (62,0 KB, 1609x aufgerufen)
 
Benutzerbild von Die Muhkuh
Die Muhkuh

 
Delphi 2009 Professional
 
#81
  Alt 6. Sep 2008, 23:20
Zitat von bob_aus_der_flasche:
der fehler kommt bei mir auch

wie soll das denn funzen xDDD

kapier nix von dem prog
Manuel
  Mit Zitat antworten Zitat
noobkovski
 
#82
  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
Xster
 
#83
  Alt 29. Nov 2008, 21:56
wo finde ich di IdIPWatch Komponente???
  Mit Zitat antworten Zitat
Dave729

 
Delphi 6 Enterprise
 
#84
  Alt 10. Dez 2008, 22:02
Hi, wollte mal fragen ob jemand laut dem Pdf den Link: nevrona öffnen kann. Hat jemand noch die Datein? Ich habe nämlich nur Delphi 3. Leider
Dave
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#85
  Alt 20. Jan 2009, 17:22
Ab und zu sollte man ja auch mal seine ausgetretenen Pfade verlassen. Aber was fange ich denn mit den beiden heruntergeladenen Exen an? Client und Server zeigen beide die gleiche IP an - was soll ich denn im Client in das Edit "IP oder Name des Servers" eintragen? Welche IP? Welchen Namen?
Ralph
  Mit Zitat antworten Zitat
Whatever
 
#86
  Alt 30. Jan 2009, 13:59
Zitat:
wo finde ich di IdIPWatch Komponente???
Die Komponente gehört zu den Indy Komponenten und ist nach der Installation unter dem Reiter Indy-Misc verfügbar.

Zitat:
Client und Server zeigen beide die gleiche IP an - was soll ich denn im Client in das Edit "IP oder Name des Servers" eintragen? Welche IP? Welchen Namen?
Sie zeigen beide die gleiche IP an weil sie auf ein und dem selben Rechner laufen. Entweder gibst du deine lokale IP an (die IP die angezeigt wird) oder 127.0.0.1 (localhost).

mfg Whatever
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#87
  Alt 30. Jan 2009, 15:37
Zitat:
Entweder gibst du deine lokale IP an (die IP die angezeigt wird) oder 127.0.0.1 (localhost)
Arrrrggggg, ich hasse Computer, die nicht gehorchen ...

Vielen Dank für die Info. Leider kann ich da eingeben was ich will, der Mist funktioniert nicht. Egal, ob mit oder ohne Kaspersky: "Der Server kann nicht gefunden werden" An Einstellungen des Routers kann's ja wohl nicht liegen, da hier doch nur der Client mit dem Server auf dem gleichen PC verbunden werden soll - oder?.

PS #1: Warum sind eigentlich Client und Server überhaupt in 2 Programme aufgeteilt? Muss nicht jeder Chat-Teilnehmer immer beide Programme starten? Warum fasst man nicht beide Funktionalitäten in einem Programm zusammen?

PS #2: Wir bräuchten hier mal einen Smiley, mit man seinen widerspenstigen PC symbolisch mit einem großen Hammer zertrümmern kann!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

 
Delphi 11 Alexandria
 
#88
  Alt 30. Jan 2009, 18:42
Zitat von taaktaak:
Wir bräuchten hier mal einen Smiley, mit man seinen widerspenstigen PC symbolisch mit einem großen Hammer zertrümmern kann!
Den hab ich mir auch schon öfter gewünscht
Detlef
  Mit Zitat antworten Zitat
Ghostleader

 
Delphi 2010 Professional
 
#89
  Alt 6. Okt 2009, 13:25
Wie genau installiere ich denn IdIPWatch bzw. diese Indykomponenten? Ich habe Delphi 5 da ist kein IdIPWatch enthalten!
Michael
  Mit Zitat antworten Zitat
Ghostleader

 
Delphi 2010 Professional
 
#90
  Alt 6. Okt 2009, 14:52
kann mir jemand helfen?
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 11   « Erste     789 1011      


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz