Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Авторизация через TServerSocket [D7, WinXP]


KuH ©   (2008-05-19 15:29:00) 

Идея такова. Есть сервер, к которому конектятся клиенты. Если клиент не будет авторизирован сервером в течении некоторого периода времени, то соеденение закрывается. Информация о статусе авторизации храниться в отдельном массиве. При отключении клиента сервером, все работает нормально. Соеденение закрываеться, массив смещаеться на одну позицию.

Проблема:
Немогу определить номер соединения TServerSocket.Socket.Connection[i] при отключении со стороны клиента. Уважаемые мастера, подскажите как это сделать! Возможно, мой подход к авторизации вовсе неверен? Заранее спасибо.


KuH   (2008-05-20 00:34:00) [1]

Спасибо за советы, буду изучать!


Сергей М.   (2008-05-19 20:51:00) [2]


> 1)


Массив для этого не нужен, еще раз повторяю.

Каждый объект класса TClientWinSocket имеет св-во Data, которое м.б. использовано для хранения любой доп.инф-ци о соединении.

Эти объекты организованы в тот самый список Connections.

Дальше шевели мозгами сам ... Намек был уж куда прямее ..


> меня интересует процедура логина к серверу и защита от несанкционированого
> взлома


Все это неимеет отношение к транспортному уровню, который представляют эти компоненты.


>
> 3)Левые - это те, которыми кул-хацкеры могут "положить"
> мой сервер, отправив большой или неправильный пакет


Если они могут тебя "положить", значит твояреализация прикладногопротокола никуда не годится.


> Я в сетевом программировании новенький


Читать до полногопросветления всекасаемое "модель OSI" !!!


KuH   (2008-05-19 17:34:00) [3]

1) Например, информация с логином и паролем каждого соеденения храниться в нем

2) В статьях написано в общем, а мне надо более углубленно. В чьихто исходниках я надеюсь подчерпнуть много информации, о том как правильно разрабатывать такую архитектуру, не хочу заново изобретать велосипед, у меня будет много ошибок. Конкретно меня интересует процедура логина к серверу и защита от несанкционированого взлома

3)Левые - это те, которыми кул-хацкеры могут "положить" мой сервер, отправив большой или неправильный пакет. Я в сетевом программировании новенький, поэтому незнаю как методов взлома, так и методов защиты. Не сложно будет узнать порт и АйПи сервера и отправлять на него все, что угодно. Я так понимаю, что это самый распространенный способ вредительства


Сергей М.   (2008-05-19 16:57:00) [4]


> Мне этот массив нужен еще и для других целей


Для каких ?


> исходники програм, в которой хорошая реализация архитектуры
> Сервер-Клиент на базе сокетов


Нет таких.
Все зависит от конкретной прикладной задачи.
Говорить об этом абстрактнобессмысленно.


> Как правильно отсеять левые пакеты?


Что еще за "левые" ?


KuH   (2008-05-19 16:46:00) [5]

Мне этот массив нужен еще и для других целей. А за совет спасибо, сейчас попробую. Еще сразу такие вопросы:

-Подскажите исходники програм, в которой хорошая реализация архитектуры Сервер-Клиент на базе сокетов
-Как правильно отсеять левые пакеты?


Сергей М.   (2008-05-19 16:31:00) [6]


> Информация о статусе авторизации храниться в отдельном массиве


Это лишнее.
Можно вполне обойтись без этого массива.


Сергей М.   (2008-05-19 16:23:00) [7]


> Немогу определить номер соединения


В большинстве случаев он вообще нафиг не нужен.

Если инициатором разрыва соединения является клиент, то на стороне сервера возбуждается событие OnClientDisconnect, в обработчик которого параметром Socket передается ссылка на объект TCustomWinSocket, ассоциированный с разрываемым соединением.

Ссылка на ЭТОТ ЖЕ объект в момент обработки этого события фигурирует в списке Connections. Это позволяет определить индекс этоой ссылки в этом списке простым циклическим перебором списка, где в каждой итерации происходит сравнение значения параметра Socket c i-м элементом списка.


Наверх

Титульная страница Поиск, карта сайта Написать письмо