Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
ICQ2000 сделай сам 2


Автор: Alexander Vaga
WEB-сайт: http://icq2000cc.hobi.ru

Из диалога в аське:
- Котенка комy? Качественный. Почти не юзаный, 2 месяца всего. Укомплектованный. Есть шеpсть (веселенькой чеpно-белой окpаски), лапы (4шт), yсы (несчитанно) и ypчальник (встpоенный). Сабж обладает фyнкцией мочеиспyскания в тyалет, лежания на телевизоpе свесив хвост на экpан и неyемной жизнеpадостностью. Фyнкция питания отлажена пpосто на диво: с yдовольствием жpет даже хлеб и макаpоны. И все это счастье я отдаю пpосто так, для хоpоших людей не жалко!
- Бpандовый? Глюков нет? Апгpейдится? Манибек? Гаpантия? Мышь опознает?

Делфи-проект nICQ в начале будет состоять из 3-х модулей: Types, Packet, Main.

  • В модуле Types находятся константы и объявлены некоторые записи.
  • В модуле Packet - процедуры и функции для записи/чтения FLAP-пакетов.(Большинство процедур из этого модуля просто адаптированы из других проектов ICQ).
  • Название модуля Main говорит само за себя.

Исходные коды проекта находятся здесь.

До того, как начать тестирование, вам следует ввести свой UIN, password, NickName. Внесите эти данные в файл nICQ.ini:


[User]
Uin=199222333
Nick=My Nick
Password=mypass

... и можно запускать. Список контактов нам пока не нужен. Он появится позже. А сейчас будет вполне достаточно, если список контактов будет состоять только из вашего собственного UINа. Жмем на единственную кнопку, а в отладочном окне будет отображаться протокол работы. При выборе одного из пунктов Popup-меню, вызывается процедура icq_Login. Что в ней? Смотрим:


procedure TForm1.icq_Login(Status : longint);
begin
  // определяем свой IP-адрес
  Local_IP := Get_my_IP;
  // преобразуем его в DIM_IP
  StrToIP(Local_IP,DIM_IP);
  // Запоминаем, какой будет наш статус
  ICQStatus := Status;
  // если ClientSocket открыт, то закроем его
  if CLI.Active then
    CLI.Close;
  // установим флажок isAuth,
  // это значит, что сначала мы коннектимся к серверу
  // авторизации. UIN и пароль передаются именно ему.
  isAuth := true;
  // устанавливаем флажок isHDR,
  // он говорит нам о том, что, самые первые данные ,
  // из ClientSocket следует интерпретировать как
  // FLAP-заголовок
  isHDR := true;
  // заполняем поля Host и Port в ClintSocket,
  // адрес сервера авторизации: 'login.icq.com'
  // и его порт: 5190
  CLI.Address :='';
  CLI.Host := 'login.icq.com';
  CLI.Port := 5190;
  // не забываем и про TMemo
  M(Memo,'>>>>>>>>>>  login.icq.com:5190 <<<<<<<<<<<');
  // ... и собственно CONNECT
  CLI.Open;
end;

(А вот и подходящий момент, чтобы вспомнить о вашем подключении к интернету. Проблемы с получением CONNECTa могут возникнуть, если вы выходите в интернет из LAN через PROXY-сервер. Все зависит от того, как он настроен. Если он предоставляет выход в интернет только для основных сервисов (http,ftp,smtp,pop), то тут уж извините. А если на нем присутствует нормальный маскарадинг, то все будет OK).

Итак, что же дальше..? Желанный CONNECT должен наступить немного раньше конца света :) Мы подсоединились к серверу авторизации и он первым выдаст нам пакет данных. Что делать? Как принять? Куда его засунуть? Об этом мой расказ на следующей странице.

Переворачивайте...

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay