Delphi TClientSocket (все еще) устарел? - PullRequest
1 голос
/ 28 декабря 2010

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

TClientSocket устарел. это отчет оставлен открытым для учета Предлагаемые обходные пути.

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

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

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

Ответы [ 3 ]

6 голосов
/ 28 декабря 2010

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

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

5 голосов
/ 28 декабря 2010

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

1 голос
/ 28 декабря 2010

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

Обновление

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

...