我在Eclipse,Emacs,Visual Studio和记事本生活之后开始熟悉Embarcadero RAD Studio 2010:)
我跳进了相当大的C ++应用程序(500.000 - 1.000.000行),我发现它广泛使用了TClientSocket和TServerSocket。 IDE首先弄清楚TClientSocket没有找到,但仍然可以编译,我挠了挠头。然后我发现它不再默认安装,并且自返回后被标记为已弃用。
我试图阅读有关该主题但未找到太多信息。我的问题是
答案 0 :(得分:3)
已弃用,因为不再支持。它们是Winsock套接字的总结,因此整体内部机制是相同的 - 创建监听器,监听,接受,创建客户端处理程序线程,将其传递给ServerClientSocket,客户端线程读取和写入流'。
你可以尝试只导入组件 - 如果你有一个庞大的遗留应用程序来支持,那么这肯定是可行的方法。
然后是另一种方式:(使用Indy或Synapse组件来构建具有相同成员的TClientSocket'和类,以便遗留应用程序无需大量更改即可运行。
答案 1 :(得分:0)
他们已被弃用,支持Indy套接字。
但是,Indy套接字仅限阻止。如果你的程序使用了阻塞套接字,那么这很好,但是如果你使用非阻塞套接字,那么据我所知你只有两个选择:
有些组件TTcpServer
和TTcpClient
在阻止和非阻止之间切换。但是,如果以非阻塞模式运行它们,它们就不起作用(基本操作因WSAEWOULDBLOCK而失败)并且没有解决方法。
请注意阅读此内容可能不知道的任何人:即使在最新版本中(如我所写),您仍然可以通过将dclsocketsNNN.bpl
添加到设计时包列表中将它们导入IDE。它们在那里,默认情况下不活动。
我个人仍然在生产中以非阻塞模式使用TClientSocket,它工作得很好(修复了一些错误,这可能是因为提供了完整的源代码!)