Identyfikowanie socketów po GetHashCode

0

Cześć,
pracuje nad aplikacją klient-serwer. Każdy klient loguje się do serwera, serwer zapisuje jego dane w jakieś strukturze a w przypadku wylogowywania usuwa klienta ze struktury otrzymujac od klienta jego id.

Problem pojawia się w przypadku nagłego zerwania połączenia np przy ubiciu procesu klienta, nie zdazy on wtedy wyslac komunikatu o wylogowaniu. Zastanawiam się jak wychwycić ten moment i jak przyporządkować socket, który 'zgłosił' rozłączenie z danym klientem w strukturze.

Korzystam z pakietu lNet. Oczywiście w przypadku nagłego rozłączenia otrzymuje socket w metodzie OnDisconnect.

Znalazlem przy sockecie cos takiego jak GetHashCode. Pogooglowalem troche i okazalo sie ze moze on sluzyc odszukiwaniu wlasnie 'wlasciciela' pasujacego hasha w roznych strukturach.

Czy moge wykorzystac to wlasnie do takiego celu? Po prostu umieszcze jako Klucz w Dictionary wlasnie taki hash i w przypadku naglego rozlaczenia odszukam go i przeprowadze 'poprawne' wylogowanie.

Chcialbym sie tylko upewnic czy moj tok myslenia jest wlasciwy i czy powinienem wlasnie taka funkcjonalnosc wykorzystywac do tego celu? Do czego wlasciwie wykorzystuje sie takie funkcje? Czy poprawnie odkrylem przeznaczenia GetHashCode? :)

Oczywiscie przeprowadzilem wczesniej eksperyment i kazdy socket zwraca inny HashCode, pytanie tylko czy istnieje ryzyko, ze moze on sie powtorzyc u kilku klientow?

pozdrawiam!

0

Wiem, że przy hashach jest ten problem, że mogą się powtarzać dla różnych wartości. Póki co nie mam lepszego pomysłu na identyfikacje klienta po sockecie (chyba nie mają nic takiego jak tag czy jakiś stamp ;) ) więc będę szukać po HashCode a jeżeli znajde więcej Klientów niż jednego to wyśle im coś w stylu "hej, żyjesz?" no i tak wykryje tego rozłączonego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1