【问题标题】:What is the difference between TTcpClient/TTcpServer and TClientSocket/TServerSocket?TTcpClient/TTcpServer 和 TClientSocket/TServerSocket 有什么区别?
【发布时间】:2016-10-28 10:51:06
【问题描述】:

有人能解释一下他们的区别吗?它们是否相同并且工作方式相同?哪一个比其他组件好?

【问题讨论】:

    标签: delphi sockets network-programming tcpclient tcpserver


    【解决方案1】:

    它们不一样,它们的工作方式也不一样。他们在套接字 API 交互、事件处理、错误处理等方面采取了截然不同的方法。

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

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

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

    如果你需要编写新的套接字代码,如果你只对支持 Windows 感兴趣,TClientSocketTServerSocket 效果很好,但如果你需要支持跨平台,那么你应该使用第三方套接字库,如Indy(TIdTCPClient/TIdTCPServer)、ICS(TWSocket/TWSocketServer)、Synapse(TTCPBlockSocket)等

    【讨论】:

    • 如果不推荐使用 TClientSocket 并且要避免使用 TTcpClient,建议使用哪些组件进行简单的 TCP/IP 消息传递?我经常使用 TClientSocket 并推荐该组件。
    • 嗯,你说“使用 indy 或 ICS”,库,他要求组件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    相关资源
    最近更新 更多