![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
![]()
Привет всем! Помогите советом или примером, если можете.
Нужно реализовать работу с сокетами через DLL. При получении данных должна вызывается CallBack функция во внешнем модуле (EXE или другой DLL), для открытия сокета и передачи данных - экспортируемые функции. Попробовал компонент TIdTCPServer - до поры до времени всё работает, потом "ошибка дескриптора потока" с таинственным номером 6, и полный ступор. Переделал c компонентом TCPServerSocket - тоже работает недолго, потом просто перестаёт читать данные. Очень надо и очень срочно! Ещё вчера... ![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
а может сессия "отваливается" ? тут общего решения нет, надо разбирать каждый случай в отдельности
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
![]()
Сессия не отваливаеться...
Как удалось выяснить, "не на тот" поток грешил, потому уточняю вопрос: Внутри DLL "A" существует поток, с двумя "событиями" в том числе по таймеру. По таймеру же вызываються функции, поочерёдно из DLL "B1", "B2" и т.д. DLL "A" можно считать менеджером серверных сокетов. В DLL "B" реализованы различные протоколы, передаются одни и те жи данные но с преобразованием. Почему-то завершаеться поток в DLL "A"?... Срабатывает обычный "until terminate". При попытке закрыть прогу и уничтожить поток - "ошибки памяти". По опыту, возникает ощущение, что в переменную ссылающуюся на поток что то записываеться, но что и кем - не ясно. ![]() |
![]() |
![]() |
#4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Попробуйте реализовать работу с сокетами на API
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
![]()
Попробовал - возникают проблемы другого рода (со скоростью подключений/отключений).
Иследовал Indy, вообще-то там почти нет VCL ![]() По крайней мере все OnEvent вызываються без использования Sincronize(). Проследил в отладчике где возникает ошибка, окозалось: я назначил свойство - "MaxConnection", и при сробатывании данного условия сервер пытаеться уничтожить поток, а он! либо ещё либо уже не существует. Короче, сбой происходит при вызове системной функции GetCurrentThreadId в TIdThreadMgrDefault. Сложно сказать почему... Но где копать понятно, всем спасибо! ![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
все ясно,сталкивался я с такой проблемой, пытаясь реализовать возможность прерывания работы фоновой процедуры, которая работала именно на движке Indy, в результате я просто подправил исходники Indy (сейчас точно не скажу какой именно модуль). Там выполнялась проверка на то запущен ли еще поток, или нет. И данная проверка не давала корректно завершить поток. Её можно подправить, и у вас все заработает нормально.
Сразу оговорюсь: Эта правка является необходимой только в конкретной ситуации и не является ошибкой в Indy,ибо она там корректна и по месту, поэтому будьте аккуратней. Цитата:
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи Последний раз редактировалось Квэнди; 25.06.2008 в 01:28. |
|
![]() |
![]() |
#7 |
Пользователь
Регистрация: 16.05.2008
Сообщений: 17
|
![]()
Вопрос из другой области...
Сколько клиентов может одновремнно подключиться к серверу? Или, сколько их может быть открыто в одном приложении? у меня эксперимент даёт число около 1800 :-( |
![]() |
![]() |
#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 |