![]() |
Chat mit Sockets über Server...
Hey liebe DPler,
ich bastel momentan an einem chatprogramm. bisher lief es so ab, dass mit dem chatpartner IP und Port ausgetauscht wurden um eine direkte verbindung herzustellen. nun habe ich die möglichkeit, das chatprogramm über einen server laufen zu lassen, um keine direkte verbindung mehr zu benötigen. meine frage nun: wie schaffe ich es, dass mein chatpartner die nachricht erhält, die ich an den server sende? gruß |
Re: Chat mit Sockets über Server...
Halbwissen:
Entweder melden sich alle Clients beim Server an und senden zum und empfangen vom Server. Oder jeder Client sendet und fragt automatisch in einem gewissen Intervall den Server, ob er eine neue Nachricht für ihn hat. |
Re: Chat mit Sockets über Server...
Normalerweise ist es wie folgt implementiert.
- Jeder meldet sich beim Server an (stellt eine Verbindung her) - (vom Server kann man abfragen wer alles angemeldet ist) - Wenn jemand eine Nachricht schickt, wird diese an den Server geschickt mit der Angabe an wen diese Nachricht zugestellt werden soll. Der Server schaut nach ob derjenige auch verfügbar ist (eine Verbindung hergestellt hat) und sendet die Nachricht entsprechend an den jenigen (mit Vermerk von wem diese kommt) Es wird also jeder Nachricht voran gestellt an wen sie gehen soll bzw. wenn der Server sie weiter gibt, von wem diese kommt. |
Re: Chat mit Sockets über Server...
Zitat:
aber wie genau kann ich denn abfragen, wer am server angemeldet ist? ich hab bisher nur herausgefunden wieviele aktive verbindungen bestehen und wie ich an eine bestimmte verbindung etws senden kann allerdings ohne das wissen, wer sich hinter der verbindung versteckt gruß |
Re: Chat mit Sockets über Server...
Das musst du dir natürlich selbst ausdenken. Ein Programm kann schließlich nicht Gedanken lesen um heraus zu finden welchen Nickname sich jemand geben will. :wink:
Du musst dir also ein Kommando ausdenken welches der Client an den Server schicken kann, auf welches der Server mit einer Auflistung der verbundenen Clients reagiert. Ob jeder Eintrag der Liste aus einer Socket-ID besteht oder ein Nickname dahinter steckt bleibt dir überlassen. Wenn ein Nickname oder dergleichen dahinter steckt, muss jeder Client nach dem Verbinden zum Server, dem Server natürlich auch eben diese Informationen übermitteln. Also: - Client verbindet zu Server - Client schickt Nickname/LoginID zu Server - Server wartet auf Verbindungen - Server wartet auf Commandos (Anmeldung, Abfrage der Nutzerliste, Senden einer Nachricht an xy) - Wenn Anmeldung erfolgt, prüfen ob eventuelles Passwort stimmt und dann in eine Liste angemeldeter Nutzer einfügen - Wenn Nutzerliste abgefragt wird dann alle IDs(Nicknames) zurück schicken (natürlich nur dann möglich wenn Client erfolgreich einen Nickname/LoginID übermittelt hat) - Wenn Nachricht an XY geschickt werden soll, prüfen ob XY angemeldet ist und die Nachricht entsprechend an den entsprechenden Client weiter leiten Im übrigen macht es keinen Sinn einen kompletten Beitrag zu zitieren wenn dieser der direkte Vorgänger ist. Würde das jeder machen würde jede Antwort nur noch aus einem riesen Zitat des vorhergehenden Beitrages bestehen welcher wiederum aus einem Zitat der Beitrag vor jenem besteht etc. |
Re: Chat mit Sockets über Server...
1. sry wegen dem zitieren :P
2. habs jetzt folgendermaßen gelöst: wenn sich jemand beim server einloggen will, dann wird einfach ein record zum server gesendet, in dem unter anderm der Nickname steht (die anderen variablen im record sind irrelevant für mein problem und wurden deshalb nicht erwähnt) wenn der server das paket erhält dann wird der Nickname in verbindung mit der IP des absenders (die ich durch Socket.RemoteAddress erhalten habe) in einem array abgespeichert so wird dann jedes mal vorgegangen, wenn sich jemand einloggt wenn man nun jemanden direkt anschreiben will, wird folgendes eingegeben: /NicknameDesZiels Nachricht => wenn der server diese nachricht bekommt, vergleicht er den zielnicknamen mit allen vorhandenen im array wenn es einen treffer gibt, wird die zum zielnick zugehörige IP aus dem array ausgelesen als letztes wird die nachricht dann direkt an das Ziel gesendet, anstatt in den großen chatraum in dem alle nachrichten landen das wars :D ich habs deshalb so ausführlich geschrieben, damit jemand vllt anregungen und hilfestellungen für ein ähnliches problem bekommt ;) gruß :hello: |
Re: Chat mit Sockets über Server...
Zitat:
Ein Socket ist immer für Client und Server eindeutig. Bei Verwendung von IP's bekommst Du zwangsläufig probleme. lg. Astat |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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