indy komponenten für chat

yoshie117

Mitglied
hi,

also ich habe jetzt mich noch einmal rangesetzt und das mit dem writeln klappt vom client her wunderbar. Er bringt keine fehler oder ähnliches nur ich weiß nicht wie ich beim sevrer den text ausgeben kann. Ich habe nichts brauchbares in der Hilfe gefunden, mit welchem befehl klappt das ich wollte einen kleinen string in einem label im server programm ausgeben. Kann mir da jemand helfen??? Und wie kann man dann über den server diese nachricht zu einem weiteren client überführen oder muß man das dann vom client aus machen, dass der vom sevrer die nachricht wieder abruft?????

Vielen dank schon mal im Vorraus für eure Hilfe


mfg yoshie
 

Arne Buchwald

Erfahrenes Mitglied
Hi,

ein Client schickt eine Nachricht grundsätzlich zum Server (Querys jetzt mal außenvor gelassen). Der Server schickt die Message an alle Clients außer dem Absender weiter. So sollte es zu realisieren sein.

Bei mir gibt's die Verzeichnisse
Code:
C:\Programme\Borland\Delphi6\Demos\Internet\Chat\Client
C:\Programme\Borland\Delphi6\Demos\Internet\Chat\Server
in denen ein Indy-Beispiel-Chat liegt. Ich habe mir nur eben die Oberfläche angeschaut, aber denke, dass du damit zur Lösung deines Problems kommen solltest. Kannst ja eben das für dich wichtige aus dem Quellcode kopieren.
 

yoshie117

Mitglied
re

moin

ich habe noch mal ein paar fragen oder besser och eine feststellung, wenn ich mit hilfe des chatprogrames von delphi arbeiten also im /internetverzeichniss/, habe ich festgestellt, das es zwangsläufig darauf hinausverläuft, das man das komplette prog übernehmen muß weil bei diesem beispiel alles komplett zusammenspielt. Doch mei problem ist, das ich für eine belegarbeit sowas nicht tun kann (darf, wil). Gibt es denn keine einfacheren möglichkeiten mit ind ein chat zu machen. Ganz simple das man von einem client ine nachricht schreibt, diese an den server geht und dann weitergeschickt wird an alle anderen clients. Mehr will ich ja auch erst mal agr nicht.

Und dann versteh ich auch einiges nicht in dem progrgamm, z.b. was bedeudet

type
TSimpleClient = class(TObject)
DNS,
Name: string;
ListLink: Integer;
Thread: Pointer;
end;

dort steht doch sonst immer die ganz normale typedefinition, die kommt aber drunter und wenn ich das bei mir genauso machen will, wie in dem prog kommen nur fehlermeldungen. Kann sich nicht jemand erbarmen und mir verraten, wie das ganz simple zu lösen geht?? Ohne irgendwelche extra port einstelluungen etc., das kann man später immer noch hinzufügen, aber fürs erste ist das nicht entscheident und in dem prog welches in demos liegt ist das aber alles mit drinne und miteinander zusammenhängent.

client-server-client nur diese verbindung wie man das realisieren kann und wie man am evrer die kompletten nachrichten auch noch mal in einem memo ausgeben kann. Ich würde mich sehhr freuen, wenn mir jemand elfen könnte.

Grüße yoshie
 

Arne Buchwald

Erfahrenes Mitglied
Hi,

ich habe mir die beiden Programme (CBClient & CBServ) eben angeguckt. Die Programme erfüllen doch eigentlich genau dein Problem / Fragestellung.

Zur Funktionsweise (Server):
  • CBServ-Programm starten
  • Auf den Button "Start Up Server" klicken
  • Nun läuft der Server auf dem Rechner auf dem eingestellten Port (Default: 23)
Der Server kannst du auf dem gleichen Rechner laufen lassen, auf dem z.B. auch ein Client aktiv sein kann.


Zur Funktionsweise (Client):
  • Client-Software starten
  • Einen beliebigen Usernamen angeben
  • IP-Adresse des Servers angeben (unter Server Address)
  • Unter Umständen den Port anpassen (Default: 23)
  • Auf das Computersystem "Connect / Disconnect" klicken
  • Daraufhin wird mit dem Server eine Verbindung aufgebaut. Andere Internet-Nutzer könnten jetzt auch zu dem Rechner (Internet-IP weitergeben!!), wo der Server läuft, connecten und an dem Chat teilhaben.
  • Jetzt kannst du in "Your Message" beliebig viel eingeben. Dieser Text wird an den Server gesendet, der diesen weiter an die anderen Clients verteilt.

Ich hoffe, ich konnte dir helfen. Mehr ist es auch nicht.
 

yoshie117

Mitglied
re

hi ich schon wieder

ich weeß bin ein jammerlappen aber ich bekomme es nicht hin, wenn ich das jetzt nach deinenr anleitung mache, dann bringt er entweder irgendwelche socketfehler oder startet gar net erst. Es ist viel verlangt, aber kannst du nicht ein simples server unnd client prog schreiben mit indy komponente??? Und mir geben??? oder hier reinschreiben?? Ich ill ja keinen schnick schnack nur das was ich geschrieben habe. Als ich angefangen habe habe ich es ganz anders gemacht so wie bei tserversocket mit port und so festlegen und dann das prog hat wieder alles verwirrt. Ich bekomme es einfach nciht hin. Ich würde mich sehr darüber freuen, wenn du es nicht machst auch nciht schimm, dann sag es ruhig.

Bis dann yoshie
 

Arne Buchwald

Erfahrenes Mitglied
Re: re

Hi,

die beiden Programme sind eigentlich schon Grundausführung, d.h. es bringt IMO nichts, wenn ich dir kurz ein Programm schreibe, mit dem du nur einen Text zu einem anderen Programm senden kannst, da du dann dort wieder sehr viel erweitern müsstest.

Beschreibe doch einfach, wie du bei den beiden Programmen vorgehst, d.h. wie du was in welcher Reihenfolge startest und dann kann ich dir da weiterhelfen.

Außerdem sind Probleme doch da, um gelöst zu werden und nicht einfach die Flinte ins Korn zu werfen. :)
 

McMorgen

Grünschnabel
Hallo yoshie,

ich habe hier mit den indy komponenten auch mal versucht einen chat zu erstellen.
ich nutze hier die idtcpclient und idtcpserver komponenten von indy.
nachdem du den port und den zielhost festgelegt hast, kannst du mit
idtcpclient1.connect;
den aktivierten server connecten.

wenn der client mit dem server verbunden ist, kann du mit:
idtcpclient1.Writeln([test]);
einen string rüberschicken!

der empfang:
beim server unter dem event: onExecute

with AThread.Connection do
memo1.Lines.Add(ReadLn);


dann wird die nachricht zum memo hinzugefügt.

ich hoffe ich konnte dir damit etw. helfen.

MfG McMorgen