[Sockets] W jaki sposób odłączyć klienta?

0

Używam komponentów TServerSocket i TClientSocket. Dwie różne aplikacje.

Mój problem polega na tym, że chcę w pewnych okolicznościach (serwerem) zamknąć połączenie z konkretnym klientem.

[delphi]
ServerSocket1.Socket.Connections[n].Close;
[/delphi]

Wszystko wydaje się fajnie, ale w momencie gdy przychodzi nowe połączenie (po odłączeniu) - serwer generuje błąd. Doszedłem do wniosku, że winą jest gniazdo, które zostało zamknięte (bo w końcu to kazałem zrobić), a do którego chcę podpiąć kolejnego klienta.

Moje pytanie więc brzmi następująco: W jaki sposób odłączyć klienta, aby gniazdo pozostało gotowe do użycia dla następnych klientów, ewentualnie w jaki sposób otworzyć je po zamknięciu.

Domyślam się, że chodzi o użycie procedury Listen, jednak nie mam pomysłu jakie parametry wpisać: Name, Address, Service ani Queue Size nic mi nie mówią.

Czy ktoś może mi podsunąć jakieś rozwiązanie?

0

Świetnie, świetnie. Tyle, że nie na temat.

0

ServerSocket1.Socket.Connection[0].Close;

Jest poprawne. Błąd musi być gdzieś indziej.

0

Z tego co wiem rozlacza klienta sie funkcja Dissconnect a nie Close. Byc moze obie funkcje powoduja w efekcie zerwanie polaczenia ale tylko jedna pozwala na dalsza prace na tym gniezdzie.

0

Każde połączenie ma osobny deskryptor gniazda, tak więc jego zamknięcie nie powoduje utraty możliwości podłączania się nowych klientów (gniazdo nasłuchujące także posiada osobny deskryptor). Sprawdź debuggerem w której dokładnie linii Twój program generuje błąd.

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