为什么不推荐使用 TClientSocket 和 TServerSocket,我应该使用什么代替?

inq*_*uam 5 c++ c++builder c++builder-2010 tclientsocket

在过着 Eclipse、Emacs、Visual Studio 和记事本的生活之后,我才刚刚开始熟悉 Embarcadero RAD Studio 2010 :)

我正在进入一个相当大的 C++ 应用程序(500.000 - 1.000.000 行),我发现它广泛使用了 TClientSocket 和 TServerSocket。IDE首先抱怨没有找到TClientSocket,但仍然可以编译,我摸不着头脑。然后我发现它不再默认安装,并且自回归以来被标记为已弃用。

我试图阅读有关该主题的信息,但没有找到太多信息。我的问题是

  • 为什么不推荐使用 TClientSocket 和 TServerSocket?
  • 它们在运行方式上与 WinSock 和 BSD 套接字有何不同?
  • 最好使用什么替代方法,是否有一种快速替代方法,无需遍历整个应用程序并在使用 TClientSocket 和 TServerSocket 的任何地方进行更改?我猜这主要是内部运作发生了变化,或者?

Mar*_*mes 3

已弃用,因为不再支持。它们是 Winsock 套接字的包装,因此整体内部机制是相同的 - “创建侦听器,侦听,接受,创建客户端处理程序线程,将 ServerClientSocket 传递给它,客户端线程读取和写入流”。

您也许可以尝试仅导入组件 - 如果您有大量的遗留应用程序需要支持,那么如果它有效的话,这肯定是可行的方法。

然后还有另一种方法:(( 使用 Indy 或 Synapse 组件构建具有相同成员的“TClientSocket”和“TServerSocket”类,以便遗留应用程序无需进行大量更改即可运行。