Автор: Alexander
Vaga WEB-сайт: http://icq2000cc.hobi.ru
Делфи-проект 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 должен наступить немного раньше конца
света :) Мы подсоединились к серверу авторизации и он первым выдаст нам пакет
данных. Что делать? Как принять? Куда его засунуть? Об этом мой расказ на
следующей странице.
Переворачивайте... |