SimpleTCPSerwer i Client

0

Witam :)
Mam taki problem<ort> otuż</ort>...nie potrafie w komponencie SimpleTCP w serwerze zamknąc danego polączenia z clientem....chodzi o to ze....mam sobie np 5 clientów podlaczonych i chce clienta 2-giego rozlączyc. Robie cos takiego i niestety nie wychodzi bo polączenie pomiedzy tym clientem istnieje nadal:

var
  I: Integer;
  tmpClient: TSimpleTCPClient;
begin
  tmpClient := nil;
  I := Serwer.Connections.Count;
  if I <> 0 then
   for I := 0 to I - 1 do
    begin
     tmpClient := Serwer.Connections[I];
     if tmpClient.Host = '127.0.0.1'  then
      begin
       tmpClient.Connected:=false; // to nic nie daje
       //Serwer.Connections.Delete(I); tak tez nie da rady bo polączenie nadal istnieje  jednak zostalo tylko usuniete z listy serwera
       Break;
      end;
    end;

end;

Jak ktos moze mi pomoc to z gory dzieki [browar] [browar] pozdrawiam !!!

0

tmpClient.Close; :/

Jest tez cos takiego jak ServerSocket1.Socket.Disconnect(Integer);

//Integer jest numerem socketa, ktorego chcesz odlaczyc, przynajmniej tak bylo napisane w code insign

//Znalazlem to w TServerSocket, tym ktory D ma domyslnie

0

'127.0.0.1'

Chcesz, aby komputer rozłączył się od siebie? 127.0.0.1 to localhost, czyli ten sam komputer. W ten sposób najszybciej łączysz się, gdy masz powiedzmy na jednym kompie serwer i klienta jakichś usług. To jest ip 'najniższego rzędu', wyżej jest to przydzielone z dhcp/ustawione na sztywno (np. 192.168.0.67) i przez nie też możesz sam ze sobą gadać. Nie wiem, czy uda ci się rozłączyć localhosta, bo to w sumie tak jakbyś próbował rozłączyć się z tym co sam nazywasz 'ja'.

0

tmpClient.Close;

Czegos takiego niestety nie ma jesli by bylo to bym uzyl :-) chodzi mi dokladnie o komponent SimpleTCP....a jesli chodzi o adres "127.0.0.1" to dalem tylko przyklad.....chodzilo mi o to ze....np jak osoba ma IP "217.99.130.151" to ją wywala (ip jest przypisywane przeze mnie)

0

A tak à propos, to w tej pętli masz błęda , bo zmienia do i + 1, i zmienia I, więc bedzie chyba coś nie tak z mego punktu widzenia :)

0
var
   I: Integer;
   tmpClient: TSimpleTCPClient;
begin
   tmpClient := nil;
   for I := 0 to Serwer.Connections.Count-1 do
      begin
      tmpClient := Serwer.Connections[I];
      if tmpClient.Host = '127.0.0.1'   then
         begin
         tmpClient.Connected:=false; // to nic nie daje
         //Serwer.Connections.Delete(I); tak tez nie da rady bo polączenie nadal istnieje   jednak zostalo tylko usuniete z listy serwera
         Break;
         end;
      end;

end;

Ja tam nie widze zadnego blęda :-) to co jest tu wyzej jest troszke zmienione ale to jest to samo :) tyle ze tam bardziej jest zakrecone :D

0
  I := Serwer.Connections.Count;
  if I <> 0 then
   for I := 0 to I - 1 do

przecież ta pętla się nigdy nie wykona, jak podstawisz z for i := 0, a potem sprawdzisz warunek i-1, czyli -1, to pętla się od razu kończy. ludzie, no nauczcie się wreszcie korzystania z debugera, tam takie rzeczy widać od razu!

0
for I := 0 to Serwer.Connections.Count-1 do

tak lepiej ?? problem nie jest w petli bo o to mi nie chodzi....tylko w rozlączeniu clienta poprzez serwer...(od strony serwera) i czuje ze jednak nikt tego nie bedzie wiedzial...bo wydaje mi sie ze w tym komponencie jest male niedopracowanie

0

Tez nie wiem w jaki sposob rozlaczyc klienta na tym komponecie. Probowalem dodac opcje closesocket ale tez cos nie wychodzi moze ktos wie jak sobie z tym poradzic??

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