ClientID von EventClient immer gleich?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

ClientID von EventClient immer gleich?

Beitrag von Sunny »

Ich hab da mal noch ein kleine Frage bezüglich meines Messangers, welchen ich schon in meinem letzten Thread erwähnt habe.
Diesmal geht es um die mittels "EventClient()" ermittelte ClientID.

Es geht mir nämlich darum, dass in dem Messanger auch Gruppen erstellt werden können und man dann die Personen in seiner "Freundes-Liste" in Gruppen unterteilen kann.
Dazu müsste dann natürlich irgendwo gespeichert werden, welche Person (welcher Client) sich in welcher Gruppe befindet und dafür bräuchte ich natürlich eine ID, die sich nie verändert.

Daher wollte ich mal wissen, ob die zurückgegebene ID von "EventClient()" IMMER gleich bleibt, oder ob sich diese nach einer Neu-Verbindung oder einem Update (oder irgend was anderes) ändert, denn dann müsste ich jedem Client eine eigene Permanente ID zuweisen.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ClientID von EventClient immer gleich?

Beitrag von STARGÅTE »

Unter TCP bleibt die ClientID vom Verbindungsstart bis zum Verbindungsende gleich.
Nein, ein PC muss nicht die gleiche ClientID besitzen, wenn er sich ein zweites mal verbindet.
Unter UDP ist die ClientID nicht beständig (weil es eh keine Verbindung gibt).

Du musst also selbst für eine Identifizierung der Clienten sorgen, wenn die Identifizierung über mehrere Verbingsungen beständig sein soll.

ZB kann der Server ja einem neuen Clienten eine einmalige ID zuweisen, welche der Client dann bei der nächsten Verbindung zusendet und damit seine Identität angibt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Re: ClientID von EventClient immer gleich?

Beitrag von Sunny »

Ja, sowas in der Art hatte ich mir schon gedacht...
Dann werde ich das denke ich mal so handhaben, dass der Client beim ersten Verbinden mit dem Server eine Zufällige ID erstellt, die wie ein MD5-Hash aufgebaut ist und diese ID dann an den Server Sendet. Der Server vergleicht diese ID dann mit den ID's aller anderen Clients (welche in einer Liste gespeichert sind) und wenn die ID noch nicht vorhanden ist (was bei 16^32 möglichkeiten wohl der Regelfall sein sollte ^^), dann schreibt der Server die ID mit in die Liste. Sollte die ID unerwarteter Weise schon vorhanden sein, dann generiert der Client einfach eine neue ID und schickt diese dann wieder an den Server und das vergleichen geht dann wieder von vorne los. ^^

Oder gibt es da evtl. eine bessere Möglcihkeit?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ClientID von EventClient immer gleich?

Beitrag von ts-soft »

hier findest Du einen GUID-Generator mit Source,
eine solche GUID sollte einmalig sein und hat eine grösse von 16-Char.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ClientID von EventClient immer gleich?

Beitrag von STARGÅTE »

Was spricht dagegen einfach von 1 hoch zu zählen ?
Der erste Client bekommt 1, der zweite 2 usw.
Schickt ein Client keine ID bekommt er halt eine neue (also die nächste).
Schließlich macht man das bei MySQL ja auch so, im Primärindex wird einfach eine Auto-Index angelegt.

Zumal du ja eh eine Datenbank anlegen wirst, um die Daten zu speichern
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Re: ClientID von EventClient immer gleich?

Beitrag von Sunny »

OK... Das sieht ja auf jeden Fall schonmal interessant aus. Ich habe mir auch den Beitrag auf Wikipedia zu "Globally Unique Identifier" mal durchgelesen aber ich steige immer noch nicht so ganz durch das System durch. Irgendwie verstehe ich nicht so ganz, wie das genau funktioniert, dass die dadurch generierte ID eindeutig sein soll.

Edit: @STARGATE... das könnte man natürlich auch machen, wenn sich der client das erste mal mit dem Server verbindet und somit noch keine ID hat, dann erhöht der Server einfach eine gespeicherte Zahl um 1 und sendet diese dann an den Client, welcher diese dann als ID speichert, die dann jederzeit abgerufen werden kann. Das ist natürlich noch etwas einfacher als meine "um 3 Ecken gedachte" Methode ^^
Ich denke mal, so werde ich dass machen.

ReEdit: Das mit den GUID's würde mich trotzdem mal gerne interessieren.
Antworten