Библиотека C++ классов для
IRC
Автор: Adi Degani.
Нажмите сюда для увеличения картинки
Компилятор: VC6, Платформа: WIN32
Описание
Пример демонстрирует библиотеку C++ классов,
которая поможет добавить в Ваше приложение
собственный клиент IRC (наподобие любимого mIRC).
Данная библиотека поддерживает следующие
протоколы:
Возможности
- Создание TCP/IP соединения с удалённым сервером IRC.
- Сервер идентификации (необязательно. см.
CIrcSessionInfo).
- Разбор сообщений IRC.
- Эффективный механизм маппинга команд IRC на
пользовательские функции.
- Демонстрационный проект написан на MFC, напротив,
библиотека написана с использованием только C++,
STL и WIN32 API.
Классы
CIrcMessage (irc.h,irc.cpp) - Разбор потоковых команд IRC
на индивидуальные компоненты.
IIrcSessionMonitor (irc.h,irc.cpp) - Основной интерфейс для
мониторинга сессии IRC.
CIrcSession (irc.h,irc.cpp) - Менеджер сессии IRC. Создаёт
соединение с сервером IRC во вторичном потоке, а
так же передаёт разобранные сообщения IRC
зарегистрированным мониторам.
CIrcSessionInfo (irc.h,irc.cpp) - хранитель спецификации IRC
соединения.
CIrcMonitor (irc.h,irc.cpp) - Основной объект монитора
сессии (наследованный от IIrcSessionMonitor). Этот класс
включает в себя механизм, который мапит команды
IRC в пользовательские функции, тоже самое, что MFC
делает с сообщениями Windows(tm). Все уведомления
расположены вне контекста потока соединения(!)
CIrcDefaultMonitor (irc.h,irc.cpp) - Обеспечивает некоторые
автоматические ответы для сервера IRC. (Наследован
от CIrcMonitor).
CIrcIdentServer (irc.h,irc.cpp) - Сервер идентификации.
Данный класс используется классом CIrcSession.
Макросы
DEFINE_IRC_MAP() (irc.h) - Должен быть объявлен внутри
Вашего класса, наследованного от CIrcMonitor в файле .H.
DECLARE_IRC_MAP(this_class_name, base_class_name) (irc.h) - Должны быть
объявлены в Вашем, наследованном от CIrcMonitor классе
в файле .CPP.
IRC_MAP_ENTRY(class_name, command, member) (irc.h) - Добавляет
ячейки наподобие конструктора Вашего класса для
каждой команды IRC, которые Вы хотите обрабатывать.
Вспомогательные классы
WinsockInit (socket.h,socket.cpp) - Обеспечивает
автоматическую инициализацию winsock. Весь код
вычисления адресов содержится в этом классе.
Socket (socket.h,socket.cpp) - класс для сокетов WIN32.
InetAddr (socket.h,socket.cpp) - Вспомогательный класс для
интернет адресов.
CCrossThreadsMessagingDevice
(CrossThreadsMessagingDevice.h,CrossThreadsMessagingDevice.cpp) -
Используются в CIrcMonitor для постинга уведомлений IRC
в поток, в котором был создан монитор.
Как использовать
- Библиотека поставляется только в виде исходных
кодов (извиняйте, что нет готовой DLL, но думаю, что
немного поднапрягшись, Вы сделаете её), поэтому
Вы должны добавить все эти исходники в Ваш проект.
- Где-нибудь внутри Вашего проекта создайте
экземпляр CIrcSession. Никакого наследования не
требуется. Данный объект - это фактически
соединение с удалённым сервером IRC.
- Для приёма уведомлений от сервера, Вам надо
будет создать объект 'monitor'. Этот монитор может
быть любым классом, унаследованным от IIrcSessionMonitor,
напрямую или косвенно. Лично я рекомендую
наследовать его от CIrcDefaultMonitor, так как он
обеспечивает некоторые автоматические ответы на
запросы IRC сервера. (Демонстрационный проект,
представленный здесь, является многодокументным
MFC проектом, поэтому объект документа создаётся
как монитор).
- При необходимости, добавьте функции
обработчиком уведомлений в объект монитора.
Downloads
Скачать демонстрационный проект - 34
Kb
Скачать исходник - 9 Kb
Что не сделано
Вещи, которые я не включил в данную версию :
- Соединения DCC (как символьная так и файловая
передача).
- Версия DLL.
- Поддержку Unicode.
Ссылки на стандарты
- RFC #1459 - IRC Protocol
- RFC #2812 - IRC Client
- RFC #1413 - Identification
Protocol
- RFC #2813 - IRC Server
|