Witam forumowiczów,
piszę program do którego ma łączyć się około 10-12 klientów, do połączenia wykorzystuje TServerSocket (klienci TClientSocket) założenia co do serwera są takie że odpowiada klientowi na wysłaną komendę np: klient wysyła string ?TEMP_CZ1 a serwer odpowiada mu stringiem !TEMP_CZ1:87C.
Problem mam właśnie z identyfikacją od jakiego klienta przyszło zapytanie i któremy klientowi odesłać odpowiedzieć.
Próbowałem zidentyfikować klienta poprzez uchwyt do socketa
procedure TForm2.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(IntToStr(Socket.SocketHandle)+' '+Socket.ReceiveText);
end;
Każdy podłączony klient ma inny numer uchwytu ale jak odwołać się do tego przy wysyłaniu ?
Do wysylania mam kod taki:
for activcon:=0 to ServerSocket.Socket.ActiveConnections -1 do
begin
ServerSocket.Socket.Connections[activcon].SendText(strodp);
end;
i przy tym kodzie każdy podłączony klient dostaje wiadomość :/
Wczoraj przeszukałem 4p lecz nie znalazłem dobrego rozwiązania tego problemu, co prawda były pomysły żeby to rozwiązać pamiętając np adres podłączonego klienta ale w tym przypadku nie mogę tego zastosować bo w tym przypadku programy klienckie mogą być uruchomione z jednego hosta.
Prosi bym o sugestie jak ten problem rozwiązać.
Pozdrawiam