Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Lan Chat Prog machen (https://www.delphipraxis.net/96343-lan-chat-prog-machen.html)

RC AmOk 22. Jul 2007 23:22


Lan Chat Prog machen
 
wie schwer is das??
kann ein leihe wie ich der gerade mal einen Taschenrechner proggen kann das auch??

bruch ich iwelche besonderen sachen oder reicht mein Delphi 5 Standard aus??

cruiser 22. Jul 2007 23:32

Re: Lan Chat Prog machen
 
Vorraussetzung: Schau dir mal die Delphi-Hilfe zum Thema Sockets an.

Überlegung #1: TCP oder UDP


UDP: funktioniert serverlos


Vorteil: Kennt das programm den richtigen Port und passt das Protokoll braucht man nur noch ins LAN broadcasten und jeder, der auf dem selben Port lauscht bekommt die Nachricht.

Nachteil: Man weiss nicht wirklich wer wer ist, eben weil es keine Client-Verwaltung gibt, es sei denn, du baust sie selbst.

TCP: benötigt Server und Clients


Vorteil: Ein Server kann die daten der Clients halten, und du weisst, wann jemand dazustösst und abbricht

Nachteil: Du musst Server und Client-Seite programmieren

Überlegung #2: Wie soll das Protokoll aussehn?

- Benötige ich einen Header vor jeder Nachricht?
- Wie soll dieser Header aussehn?
- Wie unterscheide ich die Absender?
- Welche Befehle soll das Protokoll kennen?

------------------------------------------------

Unter Delphi 5 müsst es TTCPClient, TTCPServer und TUDPSocket schon als Komponenten geben. Die stellen allerdings nur die pure Verbindung zur Verfügung. Alles andre hängt an dir.

Phoenix 23. Jul 2007 12:17

Re: Lan Chat Prog machen
 
Diskussion um Fomulare gehen hier weiter: http://www.delphipraxis.net/internal...=753490#753490

alias5000 23. Jul 2007 13:42

Re: Lan Chat Prog machen
 
zum Thema Netzwerkchat hat Narses in der Delphi-Library ein paar gute Tutorials geschrieben. Ich verlinke mal das erste, in der Navigation da kommst du auf den Rest.

Gruß
alias5000

Der Link: http://www.delphi-library.de/topic_60744.html

RC AmOk 23. Jul 2007 18:41

Re: Lan Chat Prog machen
 
da steht ab delphi 7 heisst das das dass bei mir nich geht oder das ich das nich machen muss...hab nämlcih 5

RC AmOk 23. Jul 2007 18:57

Re: Lan Chat Prog machen
 
ok...problem...ich weiss doch gar nich wie die Oberfläche aussieht...:( gibt es iwo noch bilder mit beschriftung....



oder kann man das iwo ablesen??

DeddyH 23. Jul 2007 19:08

Re: Lan Chat Prog machen
 
1. Eigne Dir Delphi-Grundlagen an.
2. Eigne Dir Netzwerk-Grundlagen an (speziell zum TCP-Protokoll).
3. Installiere Dir die Indy-Komponenten und schau Dir die Demos an.
4. Warte damit lieber, bis Du ein bisschen Erfahrung hast ;).

RC AmOk 23. Jul 2007 19:17

Re: Lan Chat Prog machen
 
wo bekomm ich das INDY ding her???

ich wollt einfach ma das tutorial nachbauen...aber das scheint ja nich für einsteiger sonder für pros zu sein...

markusj 23. Jul 2007 20:26

Re: Lan Chat Prog machen
 
Fang doch bitte erst mal mit den Delphi-Basics an, bevor du mit OOP anfängst ... genau da landest du nämlich voll drinne, wenn du mit Indy anfängst ... solange du Hilfe dafür brauchst, eine Variable anzulegen, kannst du das knicken!

mfG
Markus

DeddyH 23. Jul 2007 20:28

Re: Lan Chat Prog machen
 
Die Reihenfolge in meinem letzten Post war nicht zufällig gewählt. :mrgreen:

RC AmOk 23. Jul 2007 20:52

Re: Lan Chat Prog machen
 
hmm...habt ihr ne tolle idee was ich so proggen kann als noob...

hab bis jetz ein Taschenrechner +-*/
und ein beschäftigungs prog wo man ganz viele fenster schliessen muss^^

Phoenix 23. Jul 2007 20:56

Re: Lan Chat Prog machen
 
Nein. Dein Programm mit den Fenstern ist schlimmste Copy&Waste-Art. Man schreibt nicht 50 mal den gleichen Code untereinander.

Lern erstmal wie man Variablen deklariert. Dann wie man Kontrollstrukte (Verzweigungen / Schleifen) richtig anwendet. Dann lerne, wie man Objekte verwendet.

Und dann schreibe den Taschenrechner und Dein Spassprogramm nochmal, und Du wirst sehen dass Du im Falle des Taschenrechners sicherlich nur noch die Hälfte, und im Falle des Spassprogrammes nur noch 1/50 von dem bisherigen Code benötigst.

Und dann - dann frag nochmal nach Ideen für Programme zum weiterlernen.

DeddyH 23. Jul 2007 21:00

Re: Lan Chat Prog machen
 
Papa Google hilft :stupid:

RC AmOk 23. Jul 2007 21:03

Re: Lan Chat Prog machen
 
Das is nich immer der gleiche code^^ die Koords sind anders...obwohl die grundform die selbe is :gruebel: :gruebel: :gruebel:

ich werd das ma mit der FOR-Schleife versuchen^^

markusj 23. Jul 2007 21:11

Re: Lan Chat Prog machen
 
Kauf die ein vernünftiges Buch ... das bringt dir wirklich was!

mfG
Markus

PS: Meine Empfehlung hab' ich schon geschrieben ... falls du meinen Post gelesen hast ...

RC AmOk 23. Jul 2007 21:18

Re: Lan Chat Prog machen
 
ich werd jetz ma im laufe der tage in die Stadt ein buch kaufen...hab ja Frei;)

könnt ihr noch andere empfehlenswerte Bücher nennen??? dann kann ich ma luschern was die so im Inet kosten und was im laden...

alias5000 23. Jul 2007 21:34

Re: Lan Chat Prog machen
 
Evtl. findest du auch in der lokalen Bücherei einige Bücher. Dort hast du dann i.d.R. eine gewisse Auswahl, ohne groß bezahlen zu müssen. Wenn du ein Buch gut findest und dir die Ausleihzeit nicht reicht, kannst du es ja kaufen ;)

RC AmOk 23. Jul 2007 21:35

Re: Lan Chat Prog machen
 
unsere bibo hat sowas leider nich...:(

SaFu 25. Jul 2007 16:20

Re: Lan Chat Prog machen
 
hier ist mal ein cod von einem selbst geschriebenen chatprogramm ist noch nicht ganz fertig hatte irgenwann keine lust mehr und die 2 version war besser aber habe ich irgenwie verschlammt
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ExtCtrls, ScktComp, XPMan;

type TEigenschaften = Record // Speichert die Eigenschaften einer Zelle
Farbe : TColor; // Hintergrundfarbe
Schrift : TFont; // Schrift
end;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Edit2: TEdit;
    Button2: TButton;
    Memo2: TMemo;
    BitBtn1: TBitBtn;
    Button3: TButton;
    Button4: TButton;
    XPManifest1: TXPManifest;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    ComboBox1: TComboBox;
    Label2: TLabel;
    Button5: TButton;
    FontDialog1: TFontDialog;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    ComboBox2: TComboBox;
    Edit1: TEdit;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button5Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
  Server:TServerSocket;
  Client:TClientSocket;
  MSG: String;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  for i:=0 to ComponentCount-1 do
  if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Server.Open;
 try
 Client.Socket.SendText((Edit1.Text)+': '+Edit2.Text);
 Panel4.Caption:= ('Gesendet an: ')+ ComboBox1.Text;
 Panel4.Visible:= True;
 Memo2.Lines.Add((Edit1.Text)+': '+Edit2.Text);
 Edit2.Clear;
 Edit2.Repaint;
 except
 Showmessage('Erst mit IP Verbinden');
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Client:= TClientSocket.Create(Form1);
  try
   Panel3.Caption:= ('Verbunden mit: ')+ ComboBox1.Text;
   Client.Port:= (Combobox2.ItemIndex);
   Client.Host:= (ComboBox1.Text);
   Client.Open;
   Panel3.Visible:= True;
   Panel2.Visible:= False;
  except
   Client.Free;
   Showmessage('Client Fehler');
  end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 MSG:= Socket.ReceiveText;
 Memo2.Lines.Add({(Socket.LocalHostEdit1.Text)+': '+}MSG);
 Panel4.Visible:= True;
 Panel4.Caption:= ('Gesendet an: ')+ ComboBox1.Text;

 Edit2.Font:= FontDialog1.Font;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Memo2.Clear;
end;

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 If key = VK_return then
 Button2.Click;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 FontDialog1.Execute;
 Edit2.Font:= FontDialog1.Font;
 Edit2.repaint;
 Memo2.Font:= FontDialog1.Font;
 Memo2.repaint;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 Server.Free;
 Client.Free;
 Panel2.Visible:= True;
 Panel3.Visible:= False;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Server:= TServerSocket.Create(Form1);
   try
   Server.Port:= (Combobox2.ItemIndex);
   Server.Open;
   Server.OnClientRead:= ServerSocket1ClientRead;
   except
   Server.Free;
   Showmessage('Server Fehler');
   end;
end;
end.
nicht sehr schön aber leicht zu verstehen


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz