Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IM im LAN verschicken, wobei Aktive Benutzer angezeigt werde (https://www.delphipraxis.net/41230-im-im-lan-verschicken-wobei-aktive-benutzer-angezeigt-werde.html)

SKolberg 28. Feb 2005 09:39


IM im LAN verschicken, wobei Aktive Benutzer angezeigt werde
 
Hallo,

ich habe schon fast alle Themen durch hier aber noch nicht wirklich was passendes gefunden.
ich möchte in meine software eine art chat einbauen, die aktive benutzer anzeigt und man durch klick af diese eine nachricht schicken kann
das die user einen Server und Client dienst brauchen ist klar, allerdings möchte ich nur benutzer angezeigt bekommen die die software
gestartet haben....



Danke, Steve

alcaeus 28. Feb 2005 09:42

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von SKolberg
ich habe schon fast alle Themen durch hier aber noch nicht wirklich was passendes gefunden.

Eben fast ;)

Das hier sollte dich mal weiterbringen: Einen Chat mit den Sockets programmieren
Wenigstens den Ansatz solltest du verwenden können...

Greetz
alcaeus

Binärbaum 28. Feb 2005 10:13

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Wenn ich mich richtig erinnere, haben in der Freeware- bzw. OpenSource-Sparte schon mehrere Leute ein Chat-Programm gepostet.

MfG
Binärbaum

SKolberg 28. Feb 2005 12:20

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Danke, ich werde mir die sachen mal anschauen...

Gruss, Steve

SKolberg 7. Mär 2005 11:25

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Hallo nochmal zurück auf die chat-sache...

die sachen die ich mir jetzt runtergeladen habe sind alle recht interessant allerdings kann ich mit denen nicht so viel anfangen,
mein problem ist:


-Die software wird bsp. auf 5 rechnern gestartet

--ich möchte keinen zentralen server am laufen haben. (muss also irgendwie ind die sw integriert sein)
--wie bekomme ich es dann hin das die sw die anderen online-user anzeigt?
--was für T"Komponenten" muss ich nutzen und wie richte ich sie ein?

---ich möchte um einen user eine nachricht zu schicken nicht erst seine ip adresse angeben,
sondern den namen der im feld steht (der "irgendwie" ge-looku-pt wurde) anklicken, schreiben und weg.

blicke in dieser sache leider garnicht durch... bitte um hilfe....

Danke, Steve

SKolberg 30. Mär 2005 07:27

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Hallo, so ich habe mir nun viele sachen und themen angeschaut allerdings habe ich probleme mit dem aufbau.

Prob.1 Ich habe Delphi2005 also kann ich somit nicht mit den Sockets rbeiten und muss Indy (9 oder 10) verwenden

Prob.2 Habe mir auch schon die Indy-Demos runtergeladen um den verlauf/code zu verstehen... allerdings bekomme ich
beim öffnen in Delphi immer probleme das er AThread... nicht zuordnen bzw. finden kann und er sie entfernen will

Prob.3 Tutorials habe ich auch nicht wirklich für Indy gefunden

Prob.4 Meine anforderungen haben sich mittlerweile erhöht
D.h. --> Client <--> Server lösung
--> Aktive und inaktive benutzer sollen angezeigt werden
--> Nachrichten auch an Inaktive Benutzer (Empfang erfolgt beim online gehen
--> Datei/en sollen der nachricht angehängt werden können
--> P.S. Das alles soll im LAN funktionieren, übers INet ist unwichtig

Vielen Dank für jeden Tip, Steve

mr47 30. Mär 2005 11:25

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Du hast vorher geschrieben, dass du keinen zentralen Server haben willst. Wenn du aber machen willst, dass offline User beim online gehen die Nachrichten empfangen wirst du damit wahrscheinlich schwierigkeiten haben. Wo willst du die Nachrichten speichern??


mfg http://www.msigna.de.vu/1.jpg

Michael_Bayer 30. Mär 2005 11:49

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
@SKolberg: Schau Dir mal Apples-Bonjour Technologie an...

Mit dem sperichern der Nachrichten wirds tatsächlich schwer.

blah 30. Mär 2005 12:12

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
So ein Teil wäre schon schön (habe noch nicht angefangen) aber eine Idee habe ich schon.
Zitat:

Zitat von SKolberg
Hallo nochmal zurück auf die chat-sache...
-Die software wird bsp. auf 5 rechnern gestartet

wäre nicht das Problem
Zitat:

Zitat von SKolberg
--ich möchte keinen zentralen server am laufen haben. (muss also irgendwie ind die sw integriert sein)
--wie bekomme ich es dann hin das die sw die anderen online-user anzeigt?
---ich möchte um einen user eine nachricht zu schicken nicht erst seine ip adresse angeben,
sondern den namen der im feld steht (der "irgendwie" ge-looku-pt wurde) anklicken, schreiben und weg.

Meine Idee wäre UDP an Broadcast (auch ohne speichern der Nachricht aber dies muss ja ned sein oder?).

So ala:
Client verbindet und sendet: $Hello meinnickname|
Alle anderen nehmen es auf und antworten z.B. mit: $MyINFO nickname|
Text an alle senden mit: $To ALL: From meinnick: dies könnte ein text sein.|
Text an User7 senden mit: $To User7: From meinnick: dies könnte auch ein Text sein!|
Client trennt sich: $Quit meinnickname|

nur so als Idee, ob sie gut ist weiss ich nicht aber euer feedback wirds zeigen :mrgreen:

Edit: Dass keine Missverständnisse auftreten, er schrieb im LAN und da sollte IMHO Broadcast kein Problem sein.

Michael_Bayer 30. Mär 2005 12:15

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Idee: Um die Nachrichten OHNE Server auch später zukommbar zu machen (geiles Wort :)), schick die Nachricht doch an alle - so eine Art P2P Chat...
Sobald die "Zielperson" online geht, schicken alle die Nachricht vom Absender los und der Empfänger hat sie dann

mr47 30. Mär 2005 12:26

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
UDP und Broadcast ist ja eigentlich nicht schlecht. Aber wenn du 100 Rechner im Netzwerk hast und nur 5 haben an der Diskussion teil (also nur 5 haben das Chatprog an), müllt es dann nicht bei den 95 anderen auch den Traffic zu? Also dass alle im Netzwerk die Message kriegen aber nur die wo online sind empfangen es auch wirklich. Das ist dann etwas "verschwenderisch"

mfg mr47 http://www.msigna.de.vu/1.jpg

Michael_Bayer 30. Mär 2005 12:28

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von mr47
UDP und Broadcoast ist ja eigentlich nicht schlecht. Aber wenn du 100 Rechner im Netzwerk hast und nur 5 haben an der Diskussion teil (also nur 5 haben das Chatprog an), müllt es dann nicht bei den 95 anderen auch den Traffic zu? Also dass alle im Netzwerk die Message kriegen aber nur die wo online sind empfangen es auch wirklich. Das ist dann etwas "verschwenderisch"

mfg mr47 http://www.msigna.de.vu/1.jpg

Neinnein! NUR wenn ich eine Nachricht an jemanden schicken möchte, der OFFLINE ist, geht die Nachricht an alle.
Ausserdem in Zeiten von 100MBit+ :cyclops: ...

mr47 30. Mär 2005 12:30

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Ok in dem Fall ist UDP eine recht einfache Variante. Du musst nur bei den Proggies umsetzen, dass wenn es heißt $Message an USer xy, dass dann alle anderen die NICHT xy heißen die Nachricht ignoieren. Ich hatte auch mal einen UDP-Chat programmiert. Das ist wirklich einfach...


mfg mr47 http://www.msigna.de.vu/1.jpg

blah 30. Mär 2005 12:33

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von mr47
Das ist dann etwas "verschwenderisch"

Zitat:

Zitat von Michael_Bayer
Ausserdem in Zeiten von 100MBit+

Ich denke die paar Byte an Chat kann man verschmerzen ;-)

SKolberg 30. Mär 2005 12:41

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
:gruebel: also wie gesgat ich denke mal server muss sein...


Server hat DB/File anbindung in dem die User stehen.
--Client @Server hallo ich User:XYZ bin da; Server setzt in DB/File User auf Aktiv/True
Andere gehen Online Server sendet @ALL ...,...,... User sind Online (beim client werden user in ListBox 'Grün'
Wenn nachricht an offline-User server speichert nachricht: Von:.... An:.... Message:...... in DB/File ?!
--nachricht sowieso nur an markierte user
--Wenn datei anhängt wir mitgespeichert und später weitergeleitet.

wäre das so machbar?? so ungefähr wie ICQ halt :gruebel:

Danke Danke, Steve

Michael_Bayer 30. Mär 2005 12:52

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von SKolberg
:gruebel: also wie gesgat ich denke mal server muss sein...


Server hat DB/File anbindung in dem die User stehen.
--Client @Server hallo ich User:XYZ bin da; Server setzt in DB/File User auf Aktiv/True
Andere gehen Online Server sendet @ALL ...,...,... User sind Online (beim client werden user in ListBox 'Grün'
Wenn nachricht an offline-User server speichert nachricht: Von:.... An:.... Message:...... in DB/File ?!
--nachricht sowieso nur an markierte user
--Wenn datei anhängt wir mitgespeichert und später weitergeleitet.

wäre das so machbar?? so ungefähr wie ICQ halt :gruebel:

Danke Danke, Steve

Jup
EDIT: Kurz und knackig ;)

Antigo 30. Mär 2005 13:42

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
ok das mit den offline messages wird wohl nur bzw. am einfachsten mit einem Server zu erreichen sein.
Um aber noch einmal auf den Broadcast zurückzukommen, ich fänd das idiotisch. Also das immer alles an alle verschickt werden soll. Spätestens bei Dateien wirds störend (Dateitauschsollte ja auch eingebunden sein).
Ich persönlich würde mir ein kleines arp versuchen zu basteln. heisst User A geht online mit dem Chat und sendet einen _einmaligen_ broadcast: >@all Ich User:'Username' bin online. IP:'192.168.1.14'.<. Alle die den Chat an haben antworten darauf mit ihrer eigenen IP Adresse, worauf sich der User eine eigene Routing Tabelle zusammenbaut: User B:192.... | User C:192...
Dann werden alle weiteren Nachrichten nur noch an den User direkt versendet.

Das wäre mein Ansatz. :)

Michael_Bayer 30. Mär 2005 13:47

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von Antigo
ok das mit den offline messages wird wohl nur bzw. am einfachsten mit einem Server zu erreichen sein.
Um aber noch einmal auf den Broadcast zurückzukommen, ich fänd das idiotisch. Also das immer alles an alle verschickt werden soll. Spätestens bei Dateien wirds störend (Dateitauschsollte ja auch eingebunden sein).
Ich persönlich würde mir ein kleines arp versuchen zu basteln. heisst User A geht online mit dem Chat und sendet einen _einmaligen_ broadcast: >@all Ich User:'Username' bin online. IP:'192.168.1.14'.<. Alle die den Chat an haben antworten darauf mit ihrer eigenen IP Adresse, worauf sich der User eine eigene Routing Tabelle zusammenbaut: User B:192.... | User C:192...
Dann werden alle weiteren Nachrichten nur noch an den User direkt versendet.

Das wäre mein Ansatz. :)

Es ging ja auch um die Möglichkeit an Mitglieder zu senden, die OFFLINE sind...
Dateiversand würde dann natürlich deaktiviert...

mr47 30. Mär 2005 14:08

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Ja aber wenn du eine Datei an EINEN User senden willst kriegen über Broadcast ALLE User die Datei, aber nur einer nimmt sie wirklich an. Und das schlägt dann langsam auf die Verbindung.... Ich glaube das meinte Antigo

mfg mr47 http://www.msigna.de.vu/1.jpg

Michael_Bayer 30. Mär 2005 14:10

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von mr47
Ja aber wenn du eine Datei an EINEN User senden willst kriegen über Broadcast ALLE User die Datei, aber nur einer nimmt sie wirklich an. Und das schlägt dann langsam auf die Verbindung.... Ich glaube das meinte Antigo

mfg mr47 http://www.msigna.de.vu/1.jpg

Ich wollte ja auch keine Datei per UDP verschicken *Gottbewahre*
Die wird schön brav per TCP verschickt...

UDP wollte ich eigentlich überhaupt nicht einsetzen - ich wollte alles per TCP machen (jeder macht sich untereinander selbst bekannt)

mr47 30. Mär 2005 14:22

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Richtig. Aber das Problem ist das du, wenn du dich anmeldest nicht weist wer noch alles online ist! Und ohne Server, musst du die nachricht an alle online User senden. Deshalb sendet man über UDP die Anfrage "Hallo wer ist online? Sendet die Antwort an <ip>" und jeder andere ONLINE User sendet per TCP, dass er online ist. Dann hast du eine art Liste bei jedem User, wer alles On ist, und kannst dann via TCP die Nachrichten versenden. UDP dient nur als "Konfigurationsprotokoll"

mfg mr47 http://www.msigna.de.vu/1.jpg

Michael_Bayer 30. Mär 2005 14:25

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von mr47
Richtig. Aber das Problem ist das du, wenn du dich anmeldest nicht weist wer noch alles online ist! Und ohne Server, musst du die nachricht an alle online User senden. Deshalb sendet man über UDP die Anfrage "Hallo wer ist online? Sendet die Antwort an <ip>" und jeder andere ONLINE User sendet per TCP, dass er online ist. Dann hast du eine art Liste bei jedem User, wer alles On ist, und kannst dann via TCP die Nachrichten versenden. UDP dient nur als "Konfigurationsprotokoll"

mfg mr47 http://www.msigna.de.vu/1.jpg

Find ich gut! Autor: Bitte losentwickeln ;)

blah 30. Mär 2005 14:32

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Klingt sehr gut :-), bin schon auf das Tool im OpenSource/Freeware bereich gespannt :thumb:

mr47 30. Mär 2005 14:33

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Ich hab noch ne Idee zu den Nachrichten an offline User:

Also man könnte es so machen, dass die Nachricht an einen User der Offline ist solange beim Versender bleibt, bis der Empfänger online geht. Das hat den Nachteil, dass der Empfänger nur die Message kriegen kann, solange der Sender noch online ist... :arrow: Ansonsten gehts nur mit Server...

mfg http://www.msigna.de.vu/1.jpg

Michael_Bayer 30. Mär 2005 14:35

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von mr47
:arrow: Ansonsten gehts nur mit Server...

mfg http://www.msigna.de.vu/1.jpg

Hey *schmoll* und was ist mit meiner "alle für einen" - Idee? :?:

mr47 30. Mär 2005 14:47

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Sorry. Was für eine "alle für einen"-Idee?

http://www.msigna.de.vu/1.jpg

SKolberg 30. Mär 2005 14:58

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Das hört sich alles sehr interessant an, allerdings wäre es nett wenn ihr mir ein paar links oder tips geben könntet,
bin noch ziemlich newbie in delphi, und verfahre nach dem "learning by doing" prinzip. wenn ich ein paar beispiele hätte
damit ich die prozeduren verstehen kann..

Danke, Steve

SKolberg 30. Mär 2005 14:58

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Das hört sich alles sehr interessant an, allerdings wäre es nett wenn ihr mir ein paar links oder tips geben könntet,
bin noch ziemlich newbie in delphi, und verfahre nach dem "learning by doing" prinzip. wenn ich ein paar beispiele hätte
damit ich die prozeduren verstehen kann..

Danke, Steve

mr47 30. Mär 2005 15:09

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Einmal reicht doch auch :mrgreen:

Also UDP einzustellen ist sehr einfach. Einen Server und einen Client (jeweils UDP) auf die Form. Die sollten auf dem gleichen Port arbeiten :wink: . Dann bei Cleint und Server, Broadcast auf true und als Host (Kann sein dass ich mich irre) 255.255.255.0 ... Bin mir aber nicht mehr 100 % sicher.

Mit

Delphi-Quellcode:
  idUdpClient1.Send('blabla');
kanste blabla dann an alle versenden (weils ja auf Broadcast funzt).

Aber als erstes würd ich dir ma in Excel oder so ne Tabelle mit allen Befehlen die man versenden kann machen. Sonst blickst du (ich sprech aus erfahrung) nacher nicht mehr durch. Einfach alle Befehle auflisten und was der Empfänger des Befehls dann machen soll. Und dann gehts an die Implementierung....

mfg http://www.msigna.de.vu/1.jpg

edit: Also die Tabelle z.B. so:

1. $Befehl-xy(parameter: ip) - Bewirkt dass alle User ihre Ip senden

oder so...

SKolberg 31. Mär 2005 07:09

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
gut ich werd mir das mal alles aufschreiben, und dann mal anfangen was zusammen zu "basteln" was ich so auch noch nicht ganz verstehe ist das mit der listbox: wie bekomme ich die user hinein (müsste über add.lines gehen?!) und wie markiere ich sie als online/offline (farblich wäre ja nicht verkehrt). Abgesehen davon ich weiss ja so ungefähr was ich haben will und was "er" können soll, worüber muss/sollte ich mir denn vorher im genaueren gedanken machen, bzw. was ist zu bedenken?

Mfg, Steve

mr47 31. Mär 2005 10:51

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Ich empfehle dir noch für alles was man mehrmals im Prog brauchen kann ne eigene Prozedur/Funktion zu schreiben. Dadurch wird das ganze viel übersichtlicher. Also z.B. zum Verbinden ne Prozedure, eine fürs User auflisten usw...


mfg

generic 7. Apr 2005 13:22

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
von broadcasts rate ich ab.
broadcasts werden immer an alle clients verschickt die im subnetz sind.
das macht also unnötig last im netz.

verwendet lieber multicasts, diese sind ähnlich wie broadcasts nur das "bessere" switche diese an die richtigen clients verschicken.
(igmp snooping muss unterstützt werden und eingeschaltet sein)

indy hat passende komponenten dafür

gruss

mr47 7. Apr 2005 13:53

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von generic
von broadcasts rate ich ab.
broadcasts werden immer an alle clients verschickt die im subnetz sind.
das macht also unnötig last im netz.

verwendet lieber multicasts, diese sind ähnlich wie broadcasts nur das "bessere" switche diese an die richtigen clients verschicken.
(igmp snooping muss unterstützt werden und eingeschaltet sein)

indy hat passende komponenten dafür

gruss

hättest du weiter am Anfang genauer gelesen, würdest du wissen, dass wir UDP-Broadcast nur zur Konfiguration einsetzen :wink: . BTW: Was sind multicasts?

mfg

generic 7. Apr 2005 14:54

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Zitat:

Zitat von mr47
hättest du weiter am Anfang genauer gelesen,

ich bekenne mich schuldig...
meine antwort bezog sich auch indirekt auf einen anderen post.

Zitat:

Zitat von mr47
Was sind multicasts?

mc sind so eine art abo die ein rechner machen kann. dazu wird das igmp-protokol genutzt.
wenn du das abo hast dann bekommst du alle streams die an diese gruppe gesendete werden.
die streams sind dann eigendlich udp pakete. diese werden aber an bestimmte reserviert ip's gesendet.
224.0.0.0 bis 239.255.255.255

mehr dazu:
http://www.iana.org/assignments/multicast-addresses

mc werden also u.a. für streaming geschichten eingesetzt.

mc sind aber auch gefährlich wenn viele grosse daten übertragen werden sollen.
unterstützen die switch im lan nicht igmp-snooping, funktionieren die switche als hubs.

mr47 7. Apr 2005 20:23

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Aha! Man lernt nie aus. Hörts sich interessant an. Ich les mir das mal durch...

mfg :hi:

Sko 2. Okt 2005 17:54

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
ich hab grade was ähnliches vor, aber ich hab noch nie mit diesen $-Befehlen gearbeitet, kann mir einer sagen, wie ich die einbauen muss :?:

Zacherl 2. Okt 2005 19:18

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
In der OpenSource habe ich eine Komponente, die alle Benutzernamen auflisten kann.
(ProfessionalConnect)

Florian

Sko 3. Okt 2005 12:45

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
brauch ich mit ProfessionalConnect immernoch den Indy-Server bzw. -Client mit dem ich zur Zeit arbeite oder ersetzt PC die?

Zacherl 3. Okt 2005 12:47

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
Die Komponenten verwenden intern die Sockets. Also brauchst du keine Indys mehr.

Florian

Sko 3. Okt 2005 12:48

Re: IM im LAN verschicken, wobei Aktive Benutzer angezeigt w
 
OK, danke, dann probier ichs gleich mal aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.
Seite 1 von 2  1 2      

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