[C++] Rozłączanie określonego połączenia w ServerSocket


(Rafał(c)) #1

Witam.

Stworzyłem swój czat internetowy, oparty na systemie klient-serwer. Komunikacja odbywa się na dwóch komponentach: ClientSocket i ServerSocket. Wszystko jest w jak najlepszym porządku. Ostatnio wprowadziłem zarządzanie użytkownikami po stronie serwera (konkretnie wyrzucanie danego użytkownika poprzez odłączenie jego połączenia). I tutaj właśnie napotykam problem. Przy podłączaniu się klienta, jego IP dodawane jest na listę ListBox1 i dostaje określone ID (numeracja Itemsów w kontrolce od 0). Przy wybraniu odpowiedniej pozycji, rozłączam połączenie o takim samym ID jak wybrany Item (bo w takiej też kolejności są notowane na liście). Proces ten przeprowadzam poleceniem:

Form1->ServerSocket1->Socket->Disconnect(ListBox1->ItemIndex);

Jednak powyższa procedura rozłącza wszystkich użytkowników, podłączonych w danej chwili do serwera. Moim zamierzeniem jest oczywiście rozłączyć tylko dane połączenie, resztę zostawiając bez naruszenia. W Internecie spotkałem się z takimi samymi problemami, jednak nigdzie nie znalazłem rozwiązania tego problemu.

Zwracam się też dlatego do Was z prośbą o pomoc. :slight_smile:

P.S. Język C++, środowisko programistyczne: Turbo C++.


(Zulowski) #2

nie jestem pewny jak w turbo C++, ale dodaj do ListBox1->ItemIndex[3]);

zeby rozlaczalo uzytkownika ktory jest 3 na liscie.


(Rafał(c)) #3
Form1->ServerSocket1->Socket->Disconnect(ListBox1->ItemIndex);

ListBox1->ItemIndex, zwraca ID aktualnie zaznaczonej pozycji na liście. Zaznaczona pozycja jest przeznaczona do wyrzucenia, więc ręcznie wpisywanie chyba nie za wiele tutaj pomoże ?