Взгляд на ICQ из Delphi

Dr.Zlobyus (cool16@e-mail.ru)

Xakep, номер #051, стр. 051-080-1

Популярность ICQ все никак не падает, а наоборот, идет огромный поток новых пользователей (русские же сидят обычно на шестизначках). И если несколько лет назад для ICQ существовал только один официальный клиент от умершей нынче Mirabilis (ее поглотила AOL), то теперь их пруд пруди. И, причем, под любую ось, будь то винды, маки или никсы. К чему я это все? :) Просто и мы сегодня напишем своего клиента, пусть не супернавороченного, но клиента.

Ты уже заинтересовался? Отлично, сейчас я быстренько введу тебя в курс дела. Я давно хотел разработать собственный ICQ-клиент, но все времени не было, да и трудоемко это - не хотелось геморроиться с громоздким кодом и т.п. Но потом мне в руки попались два компонента для работы с ICQ. С радостным предвкушением я установил один из них и обломался. За его использование требовали немало буказоидов. Но второй оказался бесплатным! Прочитав инфу, которая и тебе станет доступной чуть позже, я понял, что это именно то, что нужно. Компонент TICQClient оказался очень хорошим инструментом для создания полноценного(!!!) клиента. Он включает все необходимые возможности и при этом прост в использовании. Качай его с http://www.cobans.net/ и устанавливай. На данном этапе проблем возникнуть не должно. Заметь, что к компоненту прилагается ФАК на русском языке, а также два примера. Один из них и есть почти полноценный ICQ-клиент. Обязательно взгляни на него. Там же ты найдешь и инфу по компоненту, протоколу и другим полезным вещам.

Рождаем Асю

Итак, раз клиент у тебя есть, тогда научимся делать нечто большее. Помнишь, Х писал о программе, которая умела рассылать сообщения, находя нужных пользователей по их инфе? Об этом мы сейчас и поговорим.

Что делает наша тулза:

1) Дает возможность выбирать различные параметры поиска (для примера я взял два: страна и возраст - этого хватит).

2) Дает возможность ввести сообщение с последующей вставкой туда ника жертвы.

3) Ищет/рассылает.

Готов? Поехали...

Первым делом создай новый проект и кинь на него компоненты, расположенные как на скриншоте 1.

Edit'ы называй: LoginEdit, PasswordEdit, CountEdit и MessageEdit, соответственно. Два компонента TComboBox так и оставь. Теперь добавь кнопку и TMemo. И самое главное - TICQClient. Все. Получилось? Отлично.

Подводные камни

Создавая эту программу, я столкнулся с рядом трудностей: первая и самая важная - при поиске пользователей мы обращаемся непосредственно к серверу ICQ, а он работает очень странно. Каждый раз выдает не все UIN'ы (вспомни, как ты искал пользователей в своей аське), а при повторном поиске - уже совсем другие (на самом деле частенько бывает так, что в результате поиска найдено очень много пользователей, поэтому сервер и выдает разные юины, чтобы при следующем поиске они не повторялись - прим. ред.). Т.е. нам придется самим задавать примерное количество поисковых сеансов, да еще и отфильтровывать дубликаты! Второе - задание мессаги. Об этом позже.

Поехали!

Открой свойства компонента TICQClient. В поле ICQServer и ICQPort введи login.icq.com и 5190 соответственно. Теперь исправь поле VAR перед кодом, чтобы получилось что-то вроде:

Содержание  Вперед на стр. 051-080-2

ttfb: 3.6869049072266 ms