TServerSocket: Connections eindeutig identifizieren?!
-
hi@all,
Ich suche nach einer Möglichkeit, Verbindungen des TServerSocket (ServerSocket->Socket->Connections[i]) eindeutig durch eine ID oder irgendwas anderes identifizieren zu können.
Die IP reicht nicht, da evtl. mehrere Clients mit der selben IP später connected sind.
Momentan lasse ich von meinem Programm generierte ID's mitschicken, aber das funtzt nur, wenn ein und der selbe Computer verbunden sind. Dies gibt mir z.B. keine Auskunft darüber, ob zwei Clients hinter einem Router sitzen.
Also es müsste ein Wert sein, welcher sich bis zum disconnect/interrupt nicht ändert!
Weiß da jemand Rat?

cu
-
Schau dir mal in der Hilfe über Socket->Sockethandle an !
Ein einfaches onClientDisconnect Beispiel von nem sehr einfachen ChatServer den ich früher mal geschrieben habe;
void OnClientDisconnect(TCustomWinSocket* Socket) { String socket_id = String(Socket->SocketHandle): int socket_id_length = socket_id.Length(); for(int i = 0; i < clientlist->Count;i++) { if(clientlist->Strings[i].SubString(1,socket_id_length) == socket_id) { ServerOnClientRoundMessage(socket_id,"X:"); clientlist->Delete(i); clientlist->Sort(); } } }Lass dich nicht durch meine unsaubere Art in dem beispiel irritieren da man keine Schleifen in Events
verwenden sollte aber ich denke es sollte klar werden das man beim Cient connect neben der IP auch die SocketHandle ID(integer) als verwenden kann. Damit kannste dann dein Server connections Array abklappern und Verbindungsspezifisch agieren. Da können auch tausend Clients hinter einer WAN IP stecken
-
Dein Beispiel ist viel zu umständlich. Über "ServerSocket1->Socket->Connections[i]->SocketHandle" geht das viel einfacher. Da brauch man die IPs dann auch nicht noch in einer Stringliste zu halten.

-
Viel Dank für prompte Antworten!
Meine Probleme sind gelöst
-
PuppetMaster2k schrieb:
Dein Beispiel ist viel zu umständlich. Über "ServerSocket1->Socket->Connections[i]->SocketHandle" geht das viel einfacher. Da brauch man die IPs dann auch nicht noch in einer Stringliste zu halten.

Ich weiß doch, menno :p