Отслеживание клиентов на сокетах

  • Автор темы Verser
  • Дата начала
V

Verser

#1
Здравствуйте!

Очень прошу ответить на такой вопрос..

Есть сервер на сокетах

MS: TServerSocket;
procedure MSClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure MSClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure MSClientRead(Sender: TObject; Socket: TCustomWinSocket);


procedure TForm1.MSClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
logM('Подключился пользователь.. ');
end;

procedure TForm1.MSClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
logM('Отключился пользователь.. ');
end;

procedure TForm1.MSClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
LogM(Socket.RemoteAddress+': '+ Socket.ReceiveText); // Занесли в лог сообщение из канала
end;

Встаёт вопрос - как отследить, какой именно клиент подключился, кто написал сообщение и кто отдисконнектился? ;) Есть какая-то мысль попробовать смотреть handle... но пока ещё не до конца сформирована.

Пожалуйста, подскажите... :lol:
 
S

Silver Wind

#2
Ну так у тебя же в каждом событии передается параметр Socket: TCustomWinSocket - это все что тебе нужно, дальше копай в HELP, как по сокету получить адрес клиента и т.п.
 
V

Verser

#3
У меня может быть куууча клиентов с одного адреса, так что чисто по ип - не очень различимы. Попробую через socket.handle..
 
V

Verser

#4
Я думаю легче всего будет пустить широковещательное (broadcust вроде) сообщение.
 
E
#5
Verser А зачем вам идентифицировать клиента? и при чем тут broadcast?
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#6
ServerSocket.Socket.Connections[].. Дальше в хелп.
 
V

Verser

#7
Всем спасибо, решено через ServerSocket.Socket.Connections.Handle