在错误报告resolution comments中12266(“套接字连接错误导致资源泄漏”),Robert Ehteshamzadeh写道
不推荐使用TClientSocket。这个 报告保持开放以允许 建议的解决方法。
这适用于Delphi 6.在更高版本中,默认情况下,TClientSocket和TServerSocket尚未安装在工具选项板中,但安装说明为provided。
此后状态是否已更改,以便TClientSocket(和TServerSocket)现在再次成为Delphi VCL中的一流成员?我想在一些项目中使用TClientSocket(作为Indy和Synapse之后的另一个TCP / IP库),但在Embarcadero DocWiki中找不到官方状态信息。
('弃用'类/方法的官方索引将是有用的。)
答案 0 :(得分:6)
具体回答你的问题:
是的,TClientSocket和TServerSocket仍然被弃用,我无法想象这种情况会发生变化。
答案 1 :(得分:5)
TClientSocket和TServerSocket使用基于Windows消息的无效设计。这个方案是在Windows 3.11中引入的(或者它发生在3.1?中),当时没有真正的多任务处理和多线程套接字处理是不可能的。由于组件市场上出现了更强大,更高性能的解决方案(即Indy,其他图书馆),因此发生了弃用。尽管组件仍在发货,但将旧技术恢复生机是没有意义的。此外,我建议Embarcadero包含一些基于IOCP的服务器套接字实现,但是,我想现在服务器套接字不在Embarcadero的兴趣范围内。
答案 2 :(得分:1)
嗯,这取决于你所谓的弃用。 如果“不再包含在任何源文件夹中”计为弃用,那么是的,它仍然被弃用(D2009)。
<强>更新强>
实际上存在TClientSocket和TServerSocket的源代码。 @mjn和@Eugene指着我走向它。再次表明,没有找到Windows搜索的东西并不意味着它不存在。它可能只是潜伏在一个带有Windows认为“不可搜索”的扩展名的文件中,因为尚未为它定义搜索过滤器......(我以为我已经设置了.pas文件,但事实证明这是在我的另一台机器上。)
但我想这并没有减损它仍然被弃用......