![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Events у idTCPServer
ManGorn © (2003-07-07 09:48:00)
OnConnect и OnDisconnect - это понятно, но вот когда происходят:
OnAfterCommandHandler
OnBeforeCommandHandler
OnException
OnExecute
OnListenException
OnNoCommandHandler
OnStatus ?
(заранее спасибо за ответ)
ManGorn (2003-07-27 15:44:00) [1]
Туфта! :)
Anatoly Podgoretsky (2003-07-19 09:33:00) [2]
Все катит, только научись устанавливать компоненты и научись пользоваться блокнотом для чтения readme файлов.
ManGorn (2003-07-19 08:38:00) [3]
Не-а, не катит!
Digitman (2003-07-18 10:09:00) [4]
ну как ? обычным образом !
IDE-Меню "Component | Install packages ..", выбираешь из %DELPHI%\Lib BPL-модуль, хранящий эти компоненты (как он там обзывается - я не в курсе, спроси у других D7-юзеров), - и вот они уже у тебя в палитре !)
ManGorn (2003-07-18 09:52:00) [5]
Как в D7 доставить компоненты TClientSocket и TServerSocket???
Digitman (2003-07-14 14:37:00) [6]
> Polevi
да я не спорю)... но overlapped-нотификация, в принципе, сравнима по производительности с event-нотификацией.
Polevi (2003-07-14 14:28:00) [7]
2Digitman © (11.07.03 17:39)
>и точно так же и избавляемся в этих классах при необходимости
>от механизма оконной нотификации по-умолчанию в пользу
>событийной.
это если использовать send, recv.. а вот WSASend, WSARecv с использованием ф-ии завершения overlapped ввода вывода - слишком много придется менять, imho, проще написать свою обертку
Digitman (2003-07-14 13:59:00) [8]
> $hade
Тогда и мы все вместе с полным правом и удовольствием можем поГЫкать над самоуверенным заявлением ManGorn (14.07.03 13:34)
> Гы... а теперь скажу я :) Для тех кто плохо видит - см.выше. Я
>
> юзаю Delphi 7.0, и кто не помнит в нём больше нету TServerSocket
> и TClientSocket
$hade (2003-07-14 13:54:00) [9]
Digitman © (14.07.03 13:50)
Воистину так! :-)
Digitman (2003-07-14 13:50:00) [10]
Я не пользую D7 , но сдается мне, что пэкедж с этими компонентами так же как и в D6 просто убран с палитры по умолчанию и может быть в любой момент подключен из каталога %DELPHI%\Lib
$hade (2003-07-14 13:49:00) [11]
Тьфу,б№;, прошлый пост от меня был :-)
Tiny (2003-07-14 13:46:00) [12]
2Polevi © (11.07.03 16:22)
лучше когда базовым продуктом является Winsock API, IMHO
верно,конечно, нно действительно много гимора... Это конечно нужно знать но вот пользоваться этим, какой смысл если есть более простое решение?
2Digitman © (11.07.03 17:39)
то же самое я могу сказать и про Indy...
хотя может просто я не занимался сетью углубленно как раз до появления Indy...
(а переход с TServerSocket/TClientSocket на Indy - как минимум небольшой шок :-) типа - где читать то??! куда писать?? а еще и документация только платная??)
2ManGorn (14.07.03 13:34)
Для тех кто плохо видит - см.выше. Во-во! Я вроде ответил на твой вопрос :-)
ManGorn (2003-07-14 13:34:00) [13]
Гы... а теперь скажу я :) Для тех кто плохо видит - см.выше. Я
юзаю Delphi 7.0, и кто не помнит в нём больше нету TServerSocket
и TClientSocket. Отсюда приходится изобретать велосипед и
переходить на другие компоненты, подобные TIdTCPServer. Нет,
можно конечно и WinSock2 юзать, но нафига с ним париться?
Digitman (2003-07-11 17:39:00) [14]
> Polevi
а какие проблемы их добавить ? imho, никаких)
первое, что я когда-то сделал - заменил accept() на WSAAccept(), получив замечательную "вкусность" : true-conditional acceptance.
и ввел посему новое событие OnAcceptRequest(), в обработчике которого - как это говорят - можно действительно "забанить юзера"
уверяю, гораздо проще было переписать пару субклассов и перекрыть несколько методов, нежели лепить "с нуля" свои классы !
и точно так же и избавляемся в этих классах при необходимости от механизма оконной нотификации по-умолчанию в пользу событийной.
Polevi (2003-07-11 17:32:00) [15]
2Digitman © (11.07.03 16:53)
в TServerSocket/TClientSocket нет многих вкусностей WinSock2, к сожелению
Digitman (2003-07-11 16:53:00) [16]
> Shade
TServerSocket/TClientSocket
прозрачны до мыслимого предела)
крути-верти их как хочешь, настраивай-перестраивай - все позволяют без особых хлопот !
> Polevi
О ! Це верно) ... Но уж больно много писать приходится кода)
То ли дело - переопределил нужные классы в составе, перекрыл нужные методы - и готова совершенно оригинальная версия !! С минимумом геморроя)
Polevi (2003-07-11 16:22:00) [17]
лучше когда базовым продуктом является Winsock API, IMHO
Shade (2003-07-11 15:20:00) [18]
2 Digitman © (11.07.03 15:14)
Ну в принципе согласен...
А базовый продукт - это что ? ServerSocket/ClientSocket? или bind()/send()/recive()?
Для меня родным и базовым стал Indy...:-)
Digitman (2003-07-11 15:14:00) [19]
> Shade
зачем мне нужно тратить время на детальное (не поверхностное !!) изучение другого продукта, если базовый продукт я знаю как облупленный ?
- гибкость базового продукта в силу его простоты дает мне возможность контролировать транспорт от и до, так как мне надо в конкретных, порой нестандартных задачах;
- базовый продукт изучен вдоль и поперек - никаких неожиданностей я от него не жду; надежность и прозрачность - прежде всего
Shade (2003-07-11 14:53:00) [20]
OnExecute выполняется периодически между OnConnect и OnDisconnect
то есть тут и делаеш в принципе всю обработку данных от клиента...
есть еще OnCommandHandler
OnAfterCommandHandler
OnBeforeCommandHandler
OnNoCommandHandler
в Indy уже есть "как бы протокол обмена данными" :-)
У клиента есть метод(ы) SendCmd(...)...
Соответственно на каждую команду у сервера есть CommandHandler то есть обработчик этой комманды (его нужно создать на сервере с помощью свойства CommandHandlers)
Соответственно, если обработчик команды не зарегестрирован произойдет событие OnNoCommandHandler
Кста,OnExecute произойдет помоему только если не используешь CommandHandlers
OnException
При любом необрабатываемом исключении в вышеописаных событиях...
OnListenException
При исключении в "слушающем потоке"
OnStatus ?
Всякая фигня типа сообщений о состоянии подключения ("Connect","Resolving Host","Disconnect")
2 Digitman ©
А с чего такая принципиальность в "неиспользовании" Indy?
Очень даже неплохие компоненты...
Я понимаю что ты и сам можешь сделать лучше ручками - но зачем изобретать велосипед?