Форум: "Сети";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Внизсобытия в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c