![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: нет Всего: 0 |
Доброго времени суток, уважаемые форумчане! Что-то я здесь зачастил...
Так вот. Сегодня нарисовалась проблема. Есть такой код описания события OnServerListRecv компонента TICQClient:
Вроде бы всё хорошо в нём... НО! Если мою программу поставить на другой комп, на котором нет файлов с контакт листом, то во время первого запуска,если в контактах уина много юзеров, прога замирает напрочь и выдаёт ошибку "Переполнение стека". Что делать? --------------------
Кодинг - это стиль жизни! |
|||
|
||||
| VladBD |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: нет Всего: 5 |
зачастил - это 10 раз один и тот же топик создал? Наверное еще пару раз спросишь и .........модер не всегда спит.... Нарушение п.12 правил форума:
Это сообщение отредактировал(а) VladBD - 25.3.2007, 20:31 |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 1 Всего: 29 |
да, и надо эту тему вообще в другой раздел Delphi: Сети
|
|||
|
||||
| Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Проблема с большим контакт листом состоит в том, что происходит большое кол-во отправок пакетов AddContact.
ICQ сервер этого очень не любит. Он расценивает большое кол-во пакетов, как атаку и отрубает нафиг. Чтобы решить проблему, нужно переписать принцип отправки - отправлять всех контактов одним пакетом. Для этого нужно внести в код ICQClient следующую модификацию:
А саму отправку поместил в новую функцию AddBuddy. Я не помню, правил я в ICQWorks процедуру CreateCLI_ADDCONTACT или нет. Вроде правил. У меня она имеет такой вид:
Теперь работа строится немного по другому. Кроме AddContact теперь нужно завести StringList и занести туда каждый UIN. По окончании обработки, нужно этот стринглист отправить через AddBuddy. Зачем нужен отдельный стринглист: большие контакт-листы приходят не целиком, а несколькими отправками. Поэтому отправлять AddBuddy нужно не весь лист, а только свежепринятые. Ибо повторная отправка UIN'a ведёт к обратному действию - выключает UIN. Просто приходилось наступить на обе эти грабли |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |