1

在错误报告12266(“套接字连接错误导致资源泄漏”)的解决意见中,Robert Ehteshamzadeh 写道

TClientSocket 已弃用。此报告保持打开状态,以便提供建议的解决方法。

这是针对Delphi 6的。在以后的版本中,工具面板中默认没有安装TClientSocket和TServerSocket,但是提供了安装说明。

从那时起,这种状态是否发生了变化,以至于 TClientSocket(和 TServerSocket 也是)现在再次成为 Delphi VCL 中的一等成员?我想在某些项目中使用 TClientSocket(作为 Indy 和 Synapse 之后的另一个 TCP/IP 库),但在 Embarcadero DocWiki中找不到官方状态信息。

(“弃用”类/方法的官方索引会很有用)。

4

3 回答 3

6

具体回答你的问题:

是的,TClientSocket 和 TServerSocket 仍然被弃用,我无法想象这种情况会改变。

于 2010-12-28T14:25:05.647 回答
5

TClientSocket 和 TServerSocket 使用了基于 Windows 消息的无效设计。这个方案是在 Windows 3.11 中引入的(或者它发生在 3.1 中?),当时没有真正的多任务处理,而且多线程套接字处理是不可能的。由于组件市场(即 Indy,然后是其他库)上出现了更强大和高性能的解决方案,因此弃用了。尽管组件仍在发货,但让旧技术恢复生机是没有意义的。此外,我建议 Embarcadero 包含一些要包含的基于 IOCP 的服务器套接字实现,但是,我猜服务器套接字现在不在 Embarcadero 感兴趣的范围内。

于 2010-12-28T10:00:01.367 回答
1

好吧,这取决于您所说的已弃用。如果“不再包含在任何源文件夹中”算作已弃用,那么是的,它仍然被弃用 (D2009)。

更新

TClientSocket 和 TServerSocket 的源代码实际上是存在的。@mjn 和 @Eugene 指向我。只是再次表明,使用 Windows 搜索未找到某些内容并不意味着它不存在。它可能只是潜伏在具有 Windows 认为“不可搜索”的扩展名的文件中,因为尚未为其定义搜索过滤器......(以为我已经为 .pas 文件设置了它,但事实证明那是在我的另一台机器上)。

但我想这并没有减损它仍然被弃用......

于 2010-12-28T09:18:04.567 回答