Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

события в TCustomWinSocket   Найти похожие ветки 

 
Vitalik   (2003-10-16 18:51) [0]

Здравствуйте!
Помогите пожалуйста решить проблему:

Я использую TServerSocket. В процессе работы к нему подключаются клиенты. У TServerSocket есть свойство Socket которое содержит массив активных соединений:

TServerSocket.Socket.Connections. Тип элементов массива - TCustomWinSocket. У этого типа есть два события OnErrorEvent и OnSocketEvent. Ну собственно, и первый вопрос. Правильно ли я понимаю, что эти события происходят, когда с конкретным соединением, с одним из клиентов из массива TServerSocket.Socket.Connections происходит либо какое-то действие (OnSocketEvent), либо ошибка (OnErrorEvent)?

И второй вопрос (а если ответ на первый - "да", то это уже не вопрос, а проблема :) )
Я отлавливаю у TServerSocket событие OnClientConnect, в котором получаю указатель на новый элемент (Socket) из массива TServerSocket.Socket.Connections, который добавляется автоматически (или я и тут ошибаюсь, и я на самом деле получаю что-то другое?). Затем для этого нового соединения я в параметр Data добавляю экземпляр одного своего класса и пытаюсь установить у этого нового Socketа свои обработчики события OnErrorEvent и OnSocketEvent.

Ну примерно так:
Fsocket.OnErrorEvent:=MySocketError;
FSocket.OnSocketEvent:=MySocketevent;

Вот здесь почему-то и происходит Exception AccessViolation...

Вот мне было бы интересно узнать почему так происходит и если я в чём-то не прав, то в чём?
Спасибо!


 
Digitman ©   (2003-10-17 13:47) [1]


> Правильно ли я понимаю, что эти события происходят, когда
> с конкретным соединением, с одним из клиентов из массива
> TServerSocket.Socket.Connections происходит либо какое-то
> действие (OnSocketEvent), либо ошибка (OnErrorEvent)?


правильно.


> Я отлавливаю у TServerSocket событие OnClientConnect, в
> котором получаю указатель на новый элемент (Socket) из массива
> TServerSocket.Socket.Connections, который добавляется автоматически
> (или я и тут ошибаюсь, и я на самом деле получаю что-то
> другое?).


нет, не ошибаешься. именно так и есть.


> пытаюсь установить у этого нового Socketа свои обработчики
> события OnErrorEvent и OnSocketEvent.


может, это в ряде случаев и оправдено, но гораздо проще всего один раз (напимер, перед активизацией сервера) назначить общие обработчики событий компонента TServerSocket. Точно так же как ты это делаешь с OnClientConnect

В момент когда в транспортной петле соединения сервера с каким-либо его клиентом происходят какие-то события, будет вызван обработчик соответствующего события компонента TServerSocket, и факт.параметр Socket: TCustomWinSocket процедуры-обработчика укажет, к какому именно клиенту относится это событие



Страницы: 1 вся ветка

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
7-36867
TGrey
2003-10-05 13:43
2003.12.12
Работа с BIOS-ом из под WinXP


7-36870
Alibaba
2003-08-20 18:39
2003.12.12
TThread


14-36816
Vlad Oshin
2003-11-19 04:48
2003.12.12
Mystic с Днем Рождения!


4-36908
alexsc
2003-10-20 11:48
2003.12.12
добавить информацию о файле в структуру NTFS


14-36849
tics
2003-11-20 16:53
2003.12.12
Форумы