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] ??
TCustomSocket ma przecieŻ tlyko jedno połączenie...
w TServerSocket jest ServerSocket1.Socket.Connections[x]
...
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 ??
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...
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 ??
w serwerowej liscie polaczen chyba sie luka sama usuwa?
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ć.
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
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...
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;