![]() |
Nickliste Chat
Guten Tag,
Ich code zurzeit an einem Chat mit Server und Client ! Ich benutze folgende Komponenten : Clientsocket und Serversocket ! Könnte mir jemand ein Code beispiel geben wie ich eine Nickliste programmieren könnte oder einer den Code posten??? mfg Koksi |
Re: Nickliste Chat
Ich werde dir zwar keinen Code geben, aber folgenden Denkansatz:
Dein Server weiß, wer sich zu ihm verbindet. Speichere alle Nicks und lasse einen Client diese Liste abrufen ;) |
Re: Nickliste Chat
hat jemand ein code beispiel?
|
Re: Nickliste Chat
Es gibt kein allgemeines Code-Beispiel. Der Code ändert sich je danach wie du den Chat realisiert hast.
Pseudocode: (Server) Wenn Client verbunden hat: Sende Liste aller verbundenen Clients an alle Clients. (Client) Wenn Serverliste erhalten: Füge Liste in eine Listbox ein. |
Re: Nickliste Chat
Zitat:
|
Re: Nickliste Chat
Es gibt dazu sehr viele Beispiele im forum.
Und es gibt viele möglichkeiten dies zu machen. als erstes solltest du dir ein komplettes Protokoll überlegen. Hier mal ein Paar grundgedanken: Client verbindet zum server, server merkt sich den socket und dazu den nick. (ermöglicht später ein Privatgespräch) das ganze habe ich so realisiert das ich ein array of record gemacht habe und im record socket:TCustomwinsocket; nick:string; chatrauume: array of integer; Wenn jetzt also jemand in einen chatraum kommt, dann sollte er eine anfrage an der server senden, der server durchsucht dann in seinem array of record nach den chaträumen, wenn diese stimmen, wird der nick gesammelt, wenn alle nicks gesammelt sind wird es übertragen. Ich werde hier ebenfalls kein Copy Und Paste code posten. wenn du irgendwo nicht weiterkommst, poste einfach das was du schon hast.. und dir wird sicher geholfen.. und wenn du irgendetwas nicht verstanden hast.. dann frage halt MfG Real Thunder |
Re: Nickliste Chat
Entschuldigen sie aber mit Sockets kenn ich mich noch nicht so gut aus :oops:
mit Clientsocket1.socket.sendtext(edit1.text+' hat den Raum betreten...'); und der Server : Socket.Receivetext... ja alles schön und gut aber wie geht das mit dem Nickname wie kann ich die Namen in einer Listbox von dem Server listen und dann abfragen lassen vom Client ??? |
Re: Nickliste Chat
Du wirst ein eigenes Protokoll dafür definieren müssen....
OnConnect, Client:
Delphi-Quellcode:
Server erhält Nachricht "#NICKLIST"
Clientsocket1.socket.sendtext('#NICKLIST');
Delphi-Quellcode:
Client erhält Nachricht "#NICKNAME: ksngfskj"
for i:=0 to NickList.Count - 1 do
ServerSocket1.Socket.SendText('#NICKNAME: ' + NickList.Items[i]);
Delphi-Quellcode:
Ist natürlich mehr Pseudocode denn funktionsfähiges Delphi...
if pos('#NICKNAME', Msg) > 0 then
NickListBox1.Items.Add(copy(Msg, 12, length(Msg) - 12); |
Re: Nickliste Chat
Zitat:
|
Re: Nickliste Chat
TClientSocket und TServerSocket haben aber ein stabiles Verhalten und deren Einsatz ist durchaus noch zweckmäßig.
Und für das füllen einer Nickliste würde ich mich ans IRC-Protokoll anlehnen. Da gibt es den Befehl "/names #channel", den jeder Client aufruft und der Server sendet ihm die Nicks des Channels. |
Re: Nickliste Chat
So dann will ich dir mal ein wenig unter die arme greifen....
Als erstes überlegst du dir ein protokoll. Ich habe es so gemacht: Befehl<|#|>werte<|eoc|> wobei du dir die befhele selbst ausdenken mußt... hier mal ein beispiel Client melden sich am server an beim server wird dann ein onClientConnected ausgeführt Nun sollte der server den Socket (die verbindung) speichern und den client nach dem nick fragen.
Delphi-Quellcode:
wenn der client es empfängt antwortet er mit:
Socket.Sendtext('WANT<|#|>nick<|eoc|>');
Delphi-Quellcode:
wenn der server deinen nick hat, dann kann er anfangen alle nicknamen zu senden.
Socket.Sendtext('SENDNICK<|#|>DeinNickname<|eoc|>');
Delphi-Quellcode:
Socket.Sendtext('SENDNICKLIST<|#|>nick1<|*|>nick2<|*|>nick3<|*|>nick4<|*|>nick5<|eoc|>');
mit funktionen wie explode (kannst du hier im forum finden) kannst du dann die nicks in ein array speichern, und anschließend in eine listbox o.ä. packen MfG real Thunder. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 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