首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不推荐TClientSocket和TServerSocket,我应该使用什么呢?

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

Stack Overflow用户
提问于 2011-05-27 07:59:15
回答 2查看 3.4K关注 0票数 5

我刚开始熟悉Embarcadero RAD Studio 2010,我过了Eclipse、Emacs、Visual Studio和notepad的生活:)

我正在进入一个相当大的C++应用程序(500.000 - 1.000.000行),我发现它广泛使用了TClientSocket和TServerSocket。IDE最初是关于TClientSocket没有找到,但仍然可以编译,我抓挠了我的头。然后,我发现它在默认情况下不再安装,并被标记为“回溯”后不再推荐使用。

我试着读到关于这一主题的文章,但没有找到多少信息。我的问题是

为什么deprecated?

  • How和
  • 在功能上与WinSock和BSD套接字有什么不同?
  • 最好使用什么?是否有一个快速的替换,不会涉及到整个应用程序,并在所有使用TClientSocket和TServerSocket的地方进行更改?我猜想,主要是内部的工作方式发生了变化,或?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-27 08:21:03

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

您也许可以尝试导入组件--如果您有一个庞大的遗留应用程序要支持,那么如果它工作的话,这肯定是一条路。

还有另一种方法:(使用Indy或Synapse组件构建具有相同成员的'TClientSocket‘和TServerSocket’类,这样遗留应用程序就能正常工作,而不会发生大量更改。

票数 3
EN

Stack Overflow用户

发布于 2014-05-15 12:16:36

他们被反对支持印地套接字。

然而,印第套接字只是阻塞而已。如果您的程序使用了阻塞套接字,那么这很好,但是如果您使用的是非阻塞套接字,那么据我所知,您只有两个选项:

  • 使用线程加上阻塞的独立套接字
  • 使用TClientSocket和TServerSocket

有一些组件TTcpServerTTcpClient在阻塞和非阻塞之间进行切换.但是,如果您在非阻塞模式下操作它们,它们就不能工作(WSAEWOULDBLOCK的基本操作会失败),并且没有解决办法。

注意,对于可能不知道的其他阅读者:即使是在我编写的最新版本中,也可以通过将dclsocketsNNN.bpl添加到设计时包列表中,将它们导入到IDE中。它们在那里,只是在默认情况下不活动。

就我个人而言,我仍然在生产中使用非阻塞模式的TClientSocket,它工作得很好(在修复了一些bug之后,由于提供了完整的源代码,这是可能的!)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6149406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档