【发布时间】:2016-10-28 10:51:06
【问题描述】:
有人能解释一下他们的区别吗?它们是否相同并且工作方式相同?哪一个比其他组件好?
【问题讨论】:
标签: delphi sockets network-programming tcpclient tcpserver
有人能解释一下他们的区别吗?它们是否相同并且工作方式相同?哪一个比其他组件好?
【问题讨论】:
标签: delphi sockets network-programming tcpclient tcpserver
它们不一样,它们的工作方式也不一样。他们在套接字 API 交互、事件处理、错误处理等方面采取了截然不同的方法。
TClientSocket 和 TServerSocket 是原始的基于 VCL(特定于 Windows)的套接字组件。它们在 Delphi 7 中已被弃用,默认情况下不再安装,但如果您想使用它们,仍然可以手动安装。
TTcpClient 和 TTcpServer 最初是在 Delphi 6 中引入的,作为 Kylix 的跨平台套接字解决方案(这是一个死产品)。它们在 XE6 中从 Delphi 中删除,降级为演示状态,甚至不再是官方组件。
在我看来,TTcpClient 和 TTcpServer 是可怕的组件,你应该远离它们。他们使用非常简约的“最不常见的恶魔”方法进行跨平台编程,只满足多个平台支持的一些基本功能,而不利用任何特定于平台的功能甚至更高级别的功能。他们有一个设计糟糕的非常基本的界面。它们很难使用,错误处理很差,而且使用起来不是很灵活。
如果你需要编写新的套接字代码,如果你只对支持 Windows 感兴趣,TClientSocket 和 TServerSocket 效果很好,但如果你需要支持跨平台,那么你应该使用第三方套接字库,如Indy(TIdTCPClient/TIdTCPServer)、ICS(TWSocket/TWSocketServer)、Synapse(TTCPBlockSocket)等
【讨论】: