Форум: "Сети";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизАвторизация через TServerSocket Найти похожие ветки
← →
KuH (2008-05-19 15:29) [0]Идея такова. Есть сервер, к которому конектятся клиенты. Если клиент не будет авторизирован сервером в течении некоторого периода времени, то соеденение закрывается. Информация о статусе авторизации храниться в отдельном массиве. При отключении клиента сервером, все работает нормально. Соеденение закрываеться, массив смещаеться на одну позицию.
Проблема:
Немогу определить номер соединения TServerSocket.Socket.Connection[i] при отключении со стороны клиента. Уважаемые мастера, подскажите как это сделать! Возможно, мой подход к авторизации вовсе неверен? Заранее спасибо.
← →
Сергей М. © (2008-05-19 16:23) [1]
> Немогу определить номер соединения
В большинстве случаев он вообще нафиг не нужен.
Если инициатором разрыва соединения является клиент, то на стороне сервера возбуждается событие OnClientDisconnect, в обработчик которого параметром Socket передается ссылка на объект TCustomWinSocket, ассоциированный с разрываемым соединением.
Ссылка на ЭТОТ ЖЕ объект в момент обработки этого события фигурирует в списке Connections. Это позволяет определить индекс этоой ссылки в этом списке простым циклическим перебором списка, где в каждой итерации происходит сравнение значения параметра Socket c i-м элементом списка.
← →
Сергей М. © (2008-05-19 16:31) [2]
> Информация о статусе авторизации храниться в отдельном массиве
Это лишнее.
Можно вполне обойтись без этого массива.
← →
KuH (2008-05-19 16:46) [3]Мне этот массив нужен еще и для других целей. А за совет спасибо, сейчас попробую. Еще сразу такие вопросы:
-Подскажите исходники програм, в которой хорошая реализация архитектуры Сервер-Клиент на базе сокетов
-Как правильно отсеять левые пакеты?
← →
Сергей М. © (2008-05-19 16:57) [4]
> Мне этот массив нужен еще и для других целей
Для каких ?
> исходники програм, в которой хорошая реализация архитектуры
> Сервер-Клиент на базе сокетов
Нет таких.
Все зависит от конкретной прикладной задачи.
Говорить об этом абстрактно бессмысленно.
> Как правильно отсеять левые пакеты?
Что еще за "левые" ?
← →
KuH (2008-05-19 17:34) [5]1) Например, информация с логином и паролем каждого соеденения храниться в нем
2) В статьях написано в общем, а мне надо более углубленно. В чьихто исходниках я надеюсь подчерпнуть много информации, о том как правильно разрабатывать такую архитектуру, не хочу заново изобретать велосипед, у меня будет много ошибок. Конкретно меня интересует процедура логина к серверу и защита от несанкционированого взлома
3)Левые - это те, которыми кул-хацкеры могут "положить" мой сервер, отправив большой или неправильный пакет. Я в сетевом программировании новенький, поэтому незнаю как методов взлома, так и методов защиты. Не сложно будет узнать порт и АйПи сервера и отправлять на него все, что угодно. Я так понимаю, что это самый распространенный способ вредительства
← →
Сергей М. © (2008-05-19 20:51) [6]
> 1)
Массив для этого не нужен, еще раз повторяю.
Каждый объект класса TClientWinSocket имеет св-во Data, которое м.б. использовано для хранения любой доп.инф-ци о соединении.
Эти объекты организованы в тот самый список Connections.
Дальше шевели мозгами сам ... Намек был уж куда прямее ..
> меня интересует процедура логина к серверу и защита от несанкционированого
> взлома
Все это не имеет отношение к транспортному уровню, который представляют эти компоненты.
>
> 3)Левые - это те, которыми кул-хацкеры могут "положить"
> мой сервер, отправив большой или неправильный пакет
Если они могут тебя "положить", значит твоя реализация прикладного протокола никуда не годится.
> Я в сетевом программировании новенький
Читать до полного просветления все касаемое "модель OSI" !!!
← →
KuH (2008-05-20 00:34) [7]Спасибо за советы, буду изучать!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c