TTcpClient / TTcpServer和TClientSocket / TServerSocket有什么区别?

时间:2014-09-25 18:52:11

标签: delphi sockets network-programming tcpclient tcpserver

有人可以解释一下他们的分歧吗?它们是否相同且工作方式相同?哪一个比其他组件好?

1 个答案:

答案 0 :(得分:11)

它们不一样,并且它们的工作方式不同。它们采用非常不同的方法来处理套接字API交互,事件处理,错误处理等。

TClientSocketTServerSocket是原始的基于VCL(特定于Windows)的套接字组件。它们在Delphi 7中已弃用,默认情况下不再安装,但如果您想使用它们,仍然可以手动安装。

TTcpClientTTcpServer最初是在Delphi 6中引入的,作为Kylix的跨平台套接字解决方案(这是一个死产品)。它们在XE6中从Delphi中删除,降级为演示状态,甚至不再是官方组件。

在我看来,TTcpClientTTcpServer是可怕的组成部分,你应该远离它们。他们使用非常简约的“最不常见的恶魔”"跨平台编程的方法,仅适用于多个平台支持的一些基本功能,而不是利用任何特定于平台的功能甚至更高级别的功能。它们有一个设计糟糕的非常基本的界面。它们非常难以使用,处理错误,并且使用起来不够灵活。

如果您需要编写新的套接字代码,TClientSocketTServerSocket如果您只对支持Windows感兴趣,但如果您需要支持跨平台,那么您应该使用第三个 - 派对套接字库,例如IndyTIdTCPClient / TIdTCPServer),ICSTWSocket / TWSocketServer),SynapseTTCPBlockSocket)等。