Thema: Delphi Ganz einfacher Chat

Einzelnen Beitrag anzeigen

Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Ganz einfacher Chat

  Alt 15. Sep 2003, 20:20
Hi.
Also, das hast du selbst mit Server in 5Minuten programmiert.

Wir brauchen einen Server, der die Nachrichten annimmt und sie dann einfach auf alle Clients verteilt.

Wir bauen zunächst den Server.
Du brauchst ein Memo-Feld, und einen ServerSocket. Den findest du, wenn du auf den Registerreiter "Internet" klickst.

Jetzt gehts ans Programmieren:

In den Properties des Sockets gibst du unter Port den Wert 6712 ein. Dann klick auf den Event OnClientRead rechts im Objektinspektor. Im Code deklarierst du die Variablen und schreibst den kurzen Quelltext;
Delphi-Quellcode:
var
i :integer;
msg :string;

begin
Memo1.lines.add (Socket.ReceiveText);
For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin // Anzahl der Teilnehmer
with ServerSocket1.Socket.Connections [I] do // Auswahl des Teilnehmers
if (Connected) then SendText(Socket.RemoteHost': '+msg); // Text senden
end;
end;
Dann setzt du den Socket auf Active=True (geht auch im Objektinspektor)
Dein Server ist fertig.

Jetzt der Client.
Du brauchst 1x Memofeld, 2x Editfeld, 2x Button & 1x ClientSockt (auch zu finden wenn du auf den Reiter "Internet klickst"

Das Eine Edit-Feld ist für die Ip des Servers, das andere zum schreiben der Texte. Der eine Button um die IP zu setzen und der andere um den Text zu versenden.
Im Memofeld wird die Nachricht angezeigt.

Felder anordnen, dann gehts mit dem programmieren los.

Klick auf den Button zum Speichern der IP.
Hier brauchst du folgenden Quelltext:

Delphi-Quellcode:
begin
clientsocket1.Host := edit2.text; //IP wird gespeichert
clientsocket1.Active := True //Der Socker wir aktiviert
end;
Um den Text verschicken zu können, klickst du auf den Button, der später deinen Text versenden soll und tippst:

Delphi-Quellcode:
begin
if ClientSocket1.active=true
then //Im Falle das ClientSocket verbunden ist wird die Message aus edit1 verschickt
ClientSocket1.Socket.SendText(edit1.text);
edit1.text:=''
end;
In den Properties des ClietnSockets gibst du wieder den Port 6712 an. Dann Doppelklick auf den Event OnRead.
Jetzt musst du deinem Chatprogramm noch sagen, was er mit einer Mesage machen soll, die er erhält.

Folgender Code muss in der OnRead Prozedur eingetragen werden:
Delphi-Quellcode:
Memo1.Lines.clear; //memo1 wird gelöscht
Memo1.Lines.Add(Socket.ReceiveText); //text wird eingetragen.
Das war's dein Server und dein Client sind fertig.

Tipp: Wenn du im Client "localhost" eintippst werden die Nachrichten an deinen eigenen PC geschickt. So kannst du das Programm testen.

Ausserdem kannst du beliebig viele Clients von verschiedensten Computern mit dem Server verbinden

Viel Spaß
CU
Christian
  Mit Zitat antworten Zitat