Я также использую как Indy, так и ICS.
В большинстве случаев я предпочитаю Indy, потому что реализация последовательного типа протоколов с ним очень проста (запрос выполняется в собственном потоке, поэтому вы просто читаете/пишите на соединение, очень просто). Использование Indy требует глубокого знания потоков и синхронизации. В отличие от Runner мне нравится, как Indy использует Exceptions для обработки «исключительных» вещей, потому что он позволяет мне сосредоточиться на нормальном потоке протокола (я использую блоки try-finally, чтобы удостовериться, что я освобождаю ресурсы).
Я также использовал ICS в приложении, где Indy просто не удалось: я использовал его для приложения, которое реализует прокси-сервер TCP/IP. Использование ICS было проще из-за его неблокирующего характера. Я смог прокси-протоколы TCP/IP, о которых я ничего не знаю, поэтому я понятия не имею, как байты будут перетекать с одного конца на другой. Indy потерпел неудачу в этом сценарии, потому что в Indy вы читаете эфир или пишете, вы не можете делать оба одновременно.Использование ICS для реализации протокола последовательного типа немного больно: вам по существу нужно использовать логику состояния машины, тормозить протокол небольшими битами, удерживать флаги, чтобы вы знали, где находитесь в протоколе. Большой плюс: Франсуа Пьетте, автор ICS, активен и очень полезен на нескольких форумах и в списке рассылки и очень быстро помогает в решении любых вопросов, связанных с ICS.
Для меня, если мне нужно что-то сделать с TCP/IP, путь решения очень прост: можно ли это сделать с помощью Indy? Тогда это Indy. Если это не может быть сделано с Indy, то это будет сделано с ICS!
Хотя я также выступаю за Инди, я считаю, что экзамены ICS превосходят. Специально Indy10 –
Полностью согласен. Indy10 очень плох на примерах. – Runner
@ Runner Просто посмотрите на SO, есть еще проблемы с выпуском проблемы Indy, чем есть ICS. Вы будете судьей, что более стабильно. –