Delphi TClientSocket (все еще) устарел?

В комментариях к резолюции об ошибке 12266 ("Ошибка подключения к сокету приводит к утечке ресурсов") Роберт Эхтешамзаде писал

TClientSocket устарел. Этот отчет оставлен открытым, чтобы предложить предлагаемые обходные пути.

Это было для Delphi 6. В более поздних версиях TClientSocket и TServerSocket не были установлены в палитре инструментов по умолчанию, но была предоставлена инструкция по установке.

Изменился ли этот статус с тех пор, так что TClientSocket (и TServerSocket тоже) теперь снова являются первоклассными членами в Delphi VCL? Я хотел бы использовать TClientSocket (как другую библиотеку TCP/IP после Indy и Synapse) в некоторых проектах и ​​не смог найти официальную информацию о состоянии в Embarcadero DocWiki.

(Официальный указатель "устаревших" классов / методов будет полезен).

3 ответа

Решение

Чтобы ответить на ваш вопрос конкретно:

Да, TClientSocket и TServerSocket по-прежнему устарели, и я не могу представить, что эта ситуация изменится.

TClientSocket и TServerSocket используют неэффективный дизайн, основанный на сообщениях Windows. Эта схема была введена в Windows 3.11 (или это произошло в 3.1?), Когда не было настоящей многозадачности, а обработка многопоточных сокетов была невозможна. Устаревание произошло из-за появления на рынке компонентов более мощных и высокопроизводительных решений (а именно Indy, а затем других библиотек). Нет смысла возвращать старую технологию к жизни, хотя компоненты все еще поставляются. Более того, я бы предложил, чтобы Embarcadero включил некоторую реализацию серверных сокетов на основе IOCP, однако, я думаю, серверные сокеты сейчас не входят в сферу интересов Embarcadero.

Ну, это зависит от того, что вы называете устаревшим. Если "больше не входит ни в одну из исходных папок" считается устаревшим, то да, он по-прежнему считается устаревшим (D2009).

Обновить

Источник для TClientSocket и TServerSocket фактически присутствует. @mjn и @ Евгений указали мне на это. Это еще раз показывает, что отсутствие поиска с помощью поиска Windows не означает, что его там нет. Он может просто скрываться в файле с расширением, которое Windows считает "невозможным для поиска", потому что для него не определен поисковый фильтр... (Хотя я и настроил его для файлов.pas, но оказалось, что на другой из моих машин).

Но я думаю, что это не умаляет все еще быть устаревшим...

Другие вопросы по тегам