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

ThN*_*ThN 4 sockets delphi network-programming tcpclient tcpserver

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

Rem*_*eau 11

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

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

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

在我看来,TTcpClient并且TTcpServer是可怕的组件,你应该远离他们.他们使用极简主义的"最不常见的Demoninator"方法进行跨平台编程,仅适用于多个平台支持的一些基本功能,而不是利用任何特定于平台的功能甚至更高级别的功能.它们有一个设计糟糕的非常基本的界面.它们非常难以使用,具有错误的错误处理,并且使用起来不是很灵活.

如果你需要编写新的socket代码,TClientSocket并且TServerSocket如果你是只支持Windows感兴趣的工作的伟大,但如果你需要支持跨平台的,那么你应该使用第三方的套接字库,如(TIdTCPClient/ TIdTCPServer),ICS(TWSocket/ TWSocketServer),Synapse(TTCPBlockSocket)等