![]() |
|
|
![]()
|
|
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
В следствии каких-то манимуляций клиента построенного на ClientSocket'ах мой сервер постороенный на ServerSocket валиться с ошибкой Asynchronus socket 10053.
Как этого избежать? Как создать сервер, что если возникает ошибка, очистка буфера и все чики-пики? |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Вот таким макаром создан сервер
Это сообщение отредактировал(а) HappyLife - 24.7.2007, 16:26 |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
По-моему ошибки следует обрабатывать:
А вообще я в сокетах ни бум-бум, но вот вчера качнул из сети книгу Шнейдера "Эффективное программирование на TCP/IP". На мой взгляд очень толковая книга и в ней наверняка есть ответ на ваш вопрос, т.к. там много материала уделено описанию распространённых проблем и заблуждений, и как сделать то-то и то-то. К тому же код на C++. Весит книга больше 7 Мб. В формате djvu -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
ksili, Обрабатывал. Не помогло. Спасибо, за совет.
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
||||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
dumb, Да окошко Exception. Я только разобраться не могу, где это окошко ловить надо, и где ставить исключения. И мне кажется, что после появление этого окошко сервер прекращает свою работу.
|
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Вроде бы сервер продолжать рабоботать после нажатия кнопки OK. Но вот не появления этого окошка мне добиться не удается(
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
HappyLife, "повтыкал" чутка в твой код и вопросы теперь имею:
серверсокет делаешь non-block, а читаешь в цикле - странно(либо кода мало дал). серверсокет создаешь в основном потоке, а работаешь с ним в рабочем - нехорошо. получается какая штука - так ты создаешь СС в основном потоке, то и окно(невидимое, для WSAAsyncSelect) принадлежит основному - сообщения о сетевых событиях приходят в обработчик этого окошка, и, в случае ошибок, генерится исключение, которое можно отловить в Application->OnException. по идее, приложение не должно завершаться... если ты хочешь вынести СС в отдельный поток, то создавай его в Execute и делай цикл выборки сообщений. и обрамляй там что хочешь в try/catch. |
|||
|
||||
| HappyLife |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Если ты имеешь ввиду события OnRead и т п. то ими я пользоваться не умею. Меня смущает не понимание того, когда эти событие срабатывают, если данные могут бесконечно поступать на сервер. И я не знаю что мне делать если там будет только половина пакета. Или наоборот будут лишние пакеты, или лишняя половинка пакета.
Сделал, все равно не ловит он мои обработки исключений
Как показали испытание, сервер не екается. Если нажать на кнопочку "ок" сработавшего исключение, то все продолжает работать в обычном ритме, пока клиент опять не прервет соединение, тем что брякнется сам по другим каким-то независимым причинам. Само приложение не завершается. Это сообщение отредактировал(а) HappyLife - 25.7.2007, 16:40 |
||||
|
|||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
кинь на форму компонент ApplicationEvents(закладка Additional) - у него в Event'ах есть OnException - туда, скорее всего, твое исключение и приплывет.
|
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
dumb, Благодарю за помощь.
Все оказалось много проще. Методом проб и ошибок у TServerSocket найдено было событье OnClientError которое в качестве параметра принимает ссылку ErrorCode. Я обнуляю эту переменную и сообщение не всплывает. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |