|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
20.06.2008, 21:04 | #1 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
Сокеты в DLL
Привет всем! Помогите советом или примером, если можете.
Нужно реализовать работу с сокетами через DLL. При получении данных должна вызывается CallBack функция во внешнем модуле (EXE или другой DLL), для открытия сокета и передачи данных - экспортируемые функции. Попробовал компонент TIdTCPServer - до поры до времени всё работает, потом "ошибка дескриптора потока" с таинственным номером 6, и полный ступор. Переделал c компонентом TCPServerSocket - тоже работает недолго, потом просто перестаёт читать данные. Очень надо и очень срочно! Ещё вчера... |
20.06.2008, 22:40 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
а может сессия "отваливается" ? тут общего решения нет, надо разбирать каждый случай в отдельности
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
21.06.2008, 00:39 | #3 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
Сессия не отваливаеться...
Как удалось выяснить, "не на тот" поток грешил, потому уточняю вопрос: Внутри DLL "A" существует поток, с двумя "событиями" в том числе по таймеру. По таймеру же вызываються функции, поочерёдно из DLL "B1", "B2" и т.д. DLL "A" можно считать менеджером серверных сокетов. В DLL "B" реализованы различные протоколы, передаются одни и те жи данные но с преобразованием. Почему-то завершаеться поток в DLL "A"?... Срабатывает обычный "until terminate". При попытке закрыть прогу и уничтожить поток - "ошибки памяти". По опыту, возникает ощущение, что в переменную ссылающуюся на поток что то записываеться, но что и кем - не ясно. |
21.06.2008, 08:27 | #4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Попробуйте реализовать работу с сокетами на API т.е. без VCL! Думаю все ошибки и вопросы уйдут сами собой.
|
24.06.2008, 20:17 | #5 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
Попробовал - возникают проблемы другого рода (со скоростью подключений/отключений).
Иследовал Indy, вообще-то там почти нет VCL По крайней мере все OnEvent вызываються без использования Sincronize(). Проследил в отладчике где возникает ошибка, окозалось: я назначил свойство - "MaxConnection", и при сробатывании данного условия сервер пытаеться уничтожить поток, а он! либо ещё либо уже не существует. Короче, сбой происходит при вызове системной функции GetCurrentThreadId в TIdThreadMgrDefault. Сложно сказать почему... Но где копать понятно, всем спасибо! |
25.06.2008, 01:26 | #6 | |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
все ясно,сталкивался я с такой проблемой, пытаясь реализовать возможность прерывания работы фоновой процедуры, которая работала именно на движке Indy, в результате я просто подправил исходники Indy (сейчас точно не скажу какой именно модуль). Там выполнялась проверка на то запущен ли еще поток, или нет. И данная проверка не давала корректно завершить поток. Её можно подправить, и у вас все заработает нормально.
Сразу оговорюсь: Эта правка является необходимой только в конкретной ситуации и не является ошибкой в Indy,ибо она там корректна и по месту, поэтому будьте аккуратней. Цитата:
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи Последний раз редактировалось Квэнди; 25.06.2008 в 01:28. |
|
01.07.2008, 15:09 | #7 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
Вопрос из другой области...
Сколько клиентов может одновремнно подключиться к серверу? Или, сколько их может быть открыто в одном приложении? у меня эксперимент даёт число около 1800 :-( |
01.07.2008, 21:54 | #8 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
один вопрос- одна тема. закрыто
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
передачи файлов через сокеты | CHITER | Работа с сетью в Delphi | 5 | 09.07.2010 21:55 |
Сокеты в C++ Builder | MDT | C++ Builder | 3 | 31.10.2009 18:17 |
Сокеты | ben95 | Общие вопросы Delphi | 7 | 09.03.2008 23:26 |
Сокеты в Delphi | Necro | Работа с сетью в Delphi | 11 | 24.04.2007 07:32 |
сокеты | cross | Работа с сетью в Delphi | 2 | 21.12.2006 18:12 |