Internet Components Suite (ICS) - это набор компонент для работы с Интернет в Delphi. Достаточно известные и популярные компоненты, разработанные впервые Franзois PIETTE и представляющие достаточно серьёзную альтернативу для Indy. Компоненты абсолютно бесплатны, имеют открытый исходный код и совместимы со всеми существующими сегодня версиями Delphi.
Последний релиз компонент ICS состоялся 12 сентября 2009 - вышла седьмая версия библиотеки, совместимая с Delphi 2010 и, включающая набор компонент для работы с SSL.
Закладка Overbyte ICS
Компоненты, реализующие работу с различными сетевыми протоколами:
TWSocket - базовый практически для всей библиотеки ICS компонент, поддерживающий работу через SOCKS (клиент и сервер). Используется для реализации протокола TCP (RFC 793) и протокола UDP (RFC 768).
TWSocketServer - компонент для работы с SOCKS (сервер). Может использоваться, например, для "прослушивания" портов и выполнения каких-либо действий при подключении клиента.
TFingerCli - клиент для работы с Finger - сетевым протоколом, который предназначенн для предоставления информации о пользователях удалённого компьютера. Подробная информация о протоколе содержится в RFC 1288.
TFtpCli
TFTPServer - компоненты для организации работы FTP-клиента и FTP-сервера. FTP - сандартный протокол для передачи файлов.
THTTPcli
THTTPServer - компоненты для организации работы с HTTP-протоколом на стороне клиента и сервера соответственно.
THttpAppSrv - компонент предоставляющий в наше распоряжение ядро для организации крупных приложений HTTP с большим количеством динамически создаваемых страниц и т.д. Подробная инструкция о работе с компонентом содержится в Wiki компонентов ICS (на английском языке).
TNNTPCli - клиент для NNTP (Network News Transfer Protocol) - протокола для обмена сообщениями в телеконференциях.
THtmlNNTPcli - компонент, расширяющий возможности TNNTPCli. Представляет в наше распоряжение ряд свойсти методов для передачи/получения сообщений в виде HTML-кода.
TPing - может использоваться для проверки доступности хостов. Реализует частично ICMP-протокол (Internet Control Message Protocol — межсетевой протокол управляющих сообщений).
TTnСnx - компонент для реализации Telnet-соединения (Telnet - сетевой протокол для реализации текстового интерфейса по сети).
TSMTPcli - компонент для отправки почты по SMTP. Наследниками этого компонента являются компоненты
TSyncSmtpcli (организация синхронной работы с SMTP) и
THtmlSmtpcli (расширяющий возможности по отправке HTML-кода в письмах)
TPOP3cli - компонент, организующий получение почты по протоколу POP3. Наследником этого компонента является
TSyncPOP3cli.
TDNSQuery - компонент для организации работы с запросами DNS.
Вспомогательные компоненты:
TMIMEDecode, TMimeDecodeEx и TMIMEDecodeW компоненты, предназначеные для раскодирования файлов, переданных вместе с электронным письмом (attach files). Компоненты принимают как файлы, так и потоки. В процессе работы компонента вызываются события, которые можно использовать, например, для отбражения хода процесса или сохранения файла на диск.
TEmulVT - компонент, реализующий эмуляцию терминала. Реализуется большинство операций и последовательностей. Наследником является компонент
TTnemulVT - компонент, сочетающий в себе возможности TEmulVT и TTnСnx.
TtnScript - компонент для добавления возможности выполнения сценариев пр работе с TTnemulTV. Является наследником от TTnemulTV.
TIcsCharsetComboBox - список для удобного выбора кодировок, доступных в системе. По выбранному значению в списке можно получить строку для передачи кодировки в заголовках, номер кодовой страницы и т.д.
TMultiProgressBar - компонент, представляющий собой многосекционный ProgressBar. Компонент будет удобно использовать, например, при закачке большого файла из Сети по частям. Внешний вид трехсекционного MultiProgressBar'а предсавлен на рисунке:

Компонент TMultiProgressBar удобно использовать совместно с
TMultipartFTPDownloader или
TMultiHTTPDownloader, которые обеспечивают загрузку файла с помощью нескольких одновременных соединений по FTP или HTTP-протоколу соответственно.
TicsLogger - компонент, позволяющий организовать удобное хранение логов работы какого-либо компонента библиотеки ICS. Лог может вестись как непрерывно (каждая новая запись будет добавляться в конец файла), так и обновляться при каждом новом соединении.
Закладка Overbyte ICS SSL
Закладка содержит компоненты, аналогичные тем, что расположены на "Overbyte ICS", но оеспечивающие работу с использованием SSL.
Например, для работы с HTTPS используется компонент аналогичный THTTPCli - TSSLHTTPCli, для FTP - TSSLFTPCli и т.д.
В целом можно сказать, что ICS достаточно мощная и удобная библиотека для работы с различными сетевыми протоколами. Сам я об этой библиотеке узнал давно, ещё лет 5 назад, но не использовал в силу различных причин - то не было надобности, то хотелось разобраться с тем же Synapse и т.д. Думаю, что сейчас в свободное от основной работы время, буду изучать особенности работы с ICS.
| Делись! | Загружай! | Плюсуй! |
| | |









22 мая 2010 в 1:44 дп
Несмотря на то, что компоненты бесплатные, для использования их необходимо зарегистрировать. А регистрация там забавная: необходимо отправить открытку автору программы.
Оригинал:
4. You must register this software by sending a picture postcard
to the author. Use a nice stamp and mention your name, street
address, EMail address and any comment you like to say.
22 мая 2010 в 9:42 дп
Компонент конечно хороший, но есть один недостаток: если его использовать в многопоточных задачах, то один поток перекрывает сокет и другие потоки просто стоят и ждут освобождения сокета. Вот такая многопоточность в этом компоненте. По этому моя дорога программирования была: Indy -> ICS -> Indy.
22 мая 2010 в 1:59 пп
Спасибо за информацию. Я, можно сказать, только-только начинаю более подробно разбираться в работе с ICS. Теперь буду знать где можно ждать «подвоха»:)
22 мая 2010 в 2:02 пп
Алексей Тимохин, Интересно. Жаль размер открытки не уточнен и зависит ли от размеров открытки срок «регистрации» :).
22 мая 2010 в 6:05 пп
>Компонент конечно хороший, но есть один недостаток: если его использовать в многопоточных задачах, то один поток перекрывает сокет и другие потоки просто стоят и ждут освобождения сокета. Вот такая многопоточность в этом компоненте. По этому моя дорога программирования была: Indy -> ICS -> Indy.
Зачем многопоточность в асинхронной библиотеке??
Я вот с инди перешел на эту либу и безумно рад, про потоки забыл, все делаю на событиях, экономия процессорного времени и памяти налицо, и к тому же код стал получаться «более объектно-ориентированным». Теперь жалею что на инди убил полгода времени.
И кстати, видел свойство MultiThreading, случайно не этот флаг нужно выставлять?
22 мая 2010 в 10:44 пп
Флаг MultiThreading не дал никакого результата, компонент отрабатывает в многопоточном режиме все верно, но работа с сокетом как-то не так построена, такое чувство что при создании несколько копий компонента в разных потоках сокет используется один. В результате для получения ответа с сервера потоки выставляются в очередь. Элементарно можно проверить если организовать проверку ТИЦ для 10-20 сайтов.
Но есть и хорошая сторона этого компонента, кому скорость не критично, то лучше использовать его — он более что ли гибкий. Например, если сделать дисконект на ICS и на Indy на «зависшем» серваке, т.е. который долго не дает ответа, то Indy будет «думать» долго — сек 5-10, а ICS — мгновенно. Если кто знает как это подправить на Indy, буду рад помощи.
24 мая 2010 в 3:02 пп
Попытка №2: =)
> Зачем многопоточность в асинхронной библиотеке?
Я вот этого никак не могу понять.
26 мая 2010 в 1:35 пп
Мне ICS всегда нравились. Впервые познакомился с этой библиотекой в конце 2002 года. С тех пор постоянно использовал в своих проектах. Одно время помню были проблемы с апдейтами, а теперь смотрю либу опять поддерживают.
26 Окт 2010 в 5:31 пп
>Несмотря на то, что компоненты бесплатные, для использования их необходимо зарегистрировать
Это лишь настоятельная просьба автора :)
>есть один недостаток: если его использовать в многопоточных задачах, то один поток перекрывает сокет и другие потоки просто стоят и ждут освобождения сокета
Не верю. Асинхра в многопоточном приложении имеет свой нюанс: надо организовывать цикл выборки сообщений в каждом потоке.А для проверки ТИЦ никакой многопоточности не надо, запускаешь N коннектов и обрабатываешь события.
Синхронная модель при >10 одновременных подключениях — это реальная жесть, а вот асинхронность, хоть и намного сложнее для освоения, позволяет масштабировать приложение в очень широких масштабах.
30 Дек 2011 в 12:21 пп
можно ссылочку на последнюю версию..
30 Дек 2011 в 5:13 пп
Ссылка эта http://www.rtfm.be/fpiette/indexuk.html , но почему-то сайт не пашет :(
30 Дек 2011 в 7:07 пп
Overbyte.be, официальный сайт же.
30 Дек 2011 в 7:09 пп
Fr0sT, да, сорри, тупанул под НГ :) Конечно же http://www.overbyte.be