[delphi]Socket Current Connection

0

Mam pytanie: jeżeli korzystam z TCustomScocketów to przy obiorze text'u od klienta da sie sprawdzić które to polaczenie żeby było cos w rodzaju CurentCionnection[i] ??

0

TCustomSocket ma przecieŻ tlyko jedno połączenie...

w TServerSocket jest ServerSocket1.Socket.Connections[x]

...

0

tak em TServer of coz i TClientSocket, ale chodzi mi o to, jezeli klient napisze to pobrać który on jest na tej liscie który [i] on jest ??

0

tak w sumie to co to za roznica ktory on jest... nie wiem jak to sprawdzic (nie wiem czy sie da)

jezeli piszesz i serwer i klient to wyslij z klienta pakiet do serwera z zadaniem tego numerku i odeslij...

0

W sumie to ort! nad tym myśałem, ale jak klient sie rozlaczy, to zeby go z listy placzonych usunać i wypełnić luke w liscie

A czy dodanie wątków by pomogło ??

0

w serwerowej liscie polaczen chyba sie luka sama usuwa?

0

Ja mam własną listę, która przechowuje troche wiecej danych dot użytkownika i ona jest moją listą, i przy odpadnieciu klienta ona sie uaktualnia. Najważniejsze aby spr który jest klient na liście i w odpowiedzniej kolejnosci go do mojej listy wpisać.

0
type
    TUser = record
      ....
    end;

procedure TForm1.serwerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var p:^TUser;
  begin
  New(p);   //gdy użytkownik się pierwszy raz podłączy
  socket.data:=p;
  .....
  p:=socket.data;  // wskaźnik aktywnego połączenia zostaje przypisany do p
  .....
  Dispose(p);   //usuwasz wskaźnik do użytkownika
 
  end;

Nie wiem czy dokładnie o to chodziło

0

Jeżeli chodzi o rekord to mam 'coś w tym stylu' ale taki jest problem: Klient sie łączy, przesyła mi swoje dane i chce je przechować, mając przy tym jego nr w połąączeniu, czyli coś w rodzaju Socket.Connection[i], chce wiedzieć jakie jest jego i, i potem mógłbym tylko do niego wysłać wiadomośc. To może nie jest b.trudne bo moża sobie zapisać, ale jak soie rozłączy użytkownik który ma numer w połowie to lista sie przesówa o jeden w dół od jego byłego nr a chce aby w mojej liscie właśnie też się dane przesuneły o jeden nr w dół tak jak przy liscie połączeń....Ufff, mam nadzieje, że zrozumiale to napisałem...

0

Tej drugiej cześci pytania nie zrozumiałem, ale pierwszą można zrobić tak: Przypisujesz każdemu połączeniu ID (lub coś po czym możesz ich rozróżnić) i wysyłasz coś do jednego:

var
i:integer;
p:^TUser;

begin
for i:=0 to serwer.Socket.ActiveConnections-1 do
 begin
 p:=serwer.Socket.Connections[i].Data;
 if p.ID=JakiesID then
  begin
  serwer.Socket.SendText('ble');
  break;
  end;
 end;
end;

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