• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Verser

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

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

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

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

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

Verser

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

Verser

Я думаю легче всего будет пустить широковещательное (broadcust вроде) сообщение.
 
E

etc

Verser А зачем вам идентифицировать клиента? и при чем тут broadcast?
 
V

vital

ServerSocket.Socket.Connections[].. Дальше в хелп.
 
V

Verser

Всем спасибо, решено через ServerSocket.Socket.Connections.Handle
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!