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 8 von 11   « Erste     678 910     Letzte »    
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 bigben37
bigben37

 
Delphi 2009 Professional
 
#71
  Alt 9. Apr 2008, 14:52
Zitat von everdream:
Zitat von Ultimator:
Es werden dabei TClientSocket und TServerSocket verwendet.
Ich fühle mich grade ein bischen wie ein Kastrierter im Bordell... es ist alles total einfach, nur irgendwas Grundlegendes fehlt.
Genauer gesagt habe ich jetzt eine Viertel Stunde lang die o.g. Komponenten gesucht. Wo genau find' ich die / welche uses brauche

In der Toolpalette unter Internet.

Wenn es da nicht ist, dann


Zitat von Ultimator:
Wie damals schon hier im Thread geschrieben
Geh aufs Menü "Komponente"->"Packages installieren"->"Hinzufügen"->Ins Verzeichnis "\Delphi7\Bin" wechseln->Datei "dclsockets70.bpl" doppelklicken->Ins Register "Internet" schauen und freuen
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

 
Delphi 2005 Personal
 
#72
  Alt 9. Apr 2008, 15:11
Okay, Vielen Dank (Bei wars dclsockets90.bpl statt 70)

Jetzt is alles da ^_^
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

 
Delphi 2009 Professional
 
#73
  Alt 9. Apr 2008, 15:15
Zitat von everdream:
Okay, Vielen Dank (Bei wars dclsockets90.bpl statt 70)

Jetzt is alles da ^_^
Bei mir ist es dclsockets100.bpl

Ich denke, das kommt auf die Version von Delphi an.
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#74
  Alt 9. Apr 2008, 17:25
Naja BDS 2005 wird wie "D9" verwendet

Also sozusagen ist es folgender String:
FileName := Format('dclsockets%d0.bpl', [Delphiversion]); (ACHTUNG: Dieser Code funktioniert so nicht!)

Also bei 7 ist es "70" und bei TD/BDS2006 ist es 100.

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
WinAPI

 
Delphi 7 Personal
 
#75
  Alt 4. Jun 2008, 20:53
Hallo Ich habe eben gerade mich durch das Tutorial gekämpft...
aber irgendwie klappts an einer stelle nicht =(

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Client: TClientSocket;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    GroupBox3: TGroupBox;
    Button3: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit3: TEdit;
    Button4: TButton;
    Memo1: TMemo;
    XPManifest1: TXPManifest;
    Server: TServerSocket;
    Button5: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Delay(time: word);
    procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Nickname: String;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
Server.Active := True;
Label1.Font.Color := clgreen;
Label1.Caption := 'Server gestartet';

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Server.Close;
Server.Active := False;
Label1.Font.Color := clred;
Label1.Caption := 'Server nicht gestartet';
end;

procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var I: Integer;
    test: String;
begin
  test := Socket.ReceiveText;
  For I := 0 to Server.Socket.ActiveConnections - 1 do
   begin with Server.Socket.Connections [I] do
    if (Connected) then SendText(test);
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Client.Host := Edit2.Text;
Client.Active := True;
Nickname := Edit1.Text;
Label4.Caption := 'Verbunden mit : ' + Client.Host;
Label4.Font.Color := clgreen;
Delay(500);
Client.Socket.SendText(Nickname + ' hat sich angemeldet.')
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Client.Active := False;
Label4.Caption := 'Nicht Verbunden';
Label4.Font.Color := clred;

end;

procedure TForm1.delay(time:word);
var Start: Integer;
begin
Start:=GetTickCount;
while (GetTickCount)-(Start) <= time do
Application.ProcessMessages;
end;

procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText); [b]<<< Hier stoppt es[/b]
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Client.Socket.SendText(Edit3.Text);
end;

end.
Es kommt eine Zugriffsverletzung...

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00456EFC in Modul 'Project2.exe'. Lesen von Adresse 00000220'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.




Danke für eure Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

 
Delphi 2009 Professional
 
#76
  Alt 4. Jun 2008, 21:14
Überprüf mal auf Socket <> nil
Manuel
  Mit Zitat antworten Zitat
WinAPI

 
Delphi 7 Personal
 
#77
  Alt 4. Jun 2008, 21:20
Nicht verfügbarer Wert beim Debuggen der Server sendet allerdings das richtige ab...

Socket = ()...
  Mit Zitat antworten Zitat
WinAPI

 
Delphi 7 Personal
 
#78
  Alt 4. Jun 2008, 22:00
Habe es =)
Danke trotzdem für die Hilfe
Da war irgendwie ein Memofeld buggy^^

MfG WinAPI
  Mit Zitat antworten Zitat
Spitfire
 
#79
  Alt 8. Jul 2008, 20:41
Hi ...

Ich habe das selbe Problem, was hier schonmal angesprochen, allerdings nicht richtig beantwortet wurde:


Beim Setzen der IP im Client: "Asynchronous socket error 10049."
Auf meinem Vista PC lautet sie wie folgt: "Windows socket error: Die angeforderte Adresse ist in diesem Kontext ungültig (10049), on API 'connect'".

Irgendwer meinte, dass in diesem Fall der Client zu viele Signale hinternander sendet, aber wie kann man das beheben?


Vielen Dank im Voraus ...
  Mit Zitat antworten Zitat
bob_aus_der_flasche
 
#80
  Alt 7. Sep 2008, 00:17
der fehler kommt bei mir auch

wie soll das denn funzen xDDD

kapier nix von dem prog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 8 von 11   « Erste     678 910     Letzte »    


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 04:36 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 by Thomas Breitkreuz