Вниз
Скачать: 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.012 c
3-36529
Alex-kosmonavt
2003-11-21 12:50
2003.12.12
Отображение запроса


3-36536
P0tia
2003-11-20 16:19
2003.12.12
Определение типа таблицы


1-36636
McSimm2
2003-12-03 10:01
2003.12.12
Как в переменную типа pchar записать имеющийся адрес


3-36530
Mic_2000
2003-11-18 00:39
2003.12.12
Динамические колонки в хранимых процедурах на IB7.1


6-36792
Calm
2003-10-17 10:55
2003.12.12
Организация управления прог в сети. Как лучше реализовать?




   Наверх