Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.032 c
14-36804
ИдиотЪ
2003-11-20 11:46
2003.12.12
а вот представьте ...


4-36884
Alternative
2003-10-14 20:49
2003.12.12
Позиция мыши


14-36798
ИМХО
2003-11-20 20:58
2003.12.12
Иконки больше, чем 32 на 32


1-36613
BaDeVlad
2003-12-01 14:05
2003.12.12
Можно ли задать размер файла на диске ничего не записывая?


14-36847
ИМХО
2003-11-19 05:30
2003.12.12
Уэльс - Россия... ваши прогнозы, господа?




   Наверх