2

我有一个现有的(大型)项目,最初是使用C++ Builder 2010 构建的。它使用现已弃用的套接字进行通信。

读到它们在示例项目中仍然可用,并从命令行构建它。我从Component/Install Packages导航到示例文件夹中的 bpl并安装它,然后继续尝试让代码运行。但是我感觉缺少了一些步骤。

从示例文件夹中包含Web.Win.Sockets.hpp似乎还不够。它似乎不包含关于很多东西的定义,例如现有代码使用的 TServerSocket等。System.Win.ScktComp似乎包含这些缺失的定义,但将两者混合似乎不是正确的做法。只是为了好玩,我曾经尝试过一些疯狂的事情并让它编译,但传输的数据似乎包含破坏通信的垃圾。

有一次,我尝试改用System.Win.ScktComp中的组件,但没有关于什么与什么相关以及是否有任何警告的好信息。在我得到程序编译后,它将无法连接等。

那么,是否有任何好的指南来启用和使用C++ Builder 10 Seattle的“旧”套接字?如果要搬到新的,是更换的减少还是需要大量的工作?系统以自定义二进制格式传输大量数据,因此完成了大量流处理等。现在我需要启动并运行它,因此目前对这些部分进行大量重写是不可行的。

4

1 回答 1

3

Web.Win.Sockets并且System.Win.ScktComp不是一回事,也不是彼此的替代品。

System.Win.ScktComp包含旧的 VCL 套接字组件(TClientSocket、、TServerSocket等)。这是你想要的。

Web.Win.Sockets包含旧的 CLX 套接字组件(TTcpClient、、TTcpServer等)。你不想要这个,所以忽略示例项目,你不需要它。

要获取 VCL 套接字组件,您需要做的就是安装文件夹dclSockets中的软件包$(BDS)\bin,如文档所述:

安装插座组件

默认情况下不安装套接字组件。要使用套接字组件,您必须安装dclsockets<.bpl>包。

要安装插座组件:

  1. 选择组件 >安装包
  2. 在“安装包”对话框中,单击“添加”。
  3. 在“添加设计包”对话框中,浏览至C:\Program Files (x86)\Embarcadero\Studio\17.0\bin.
  4. 选择dclsockets230.bpl,然后单击打开。
  5. 单击“确定”关闭“安装包”对话框。
  6. 套接字组件(TClientSocketTServerSocket)列在Tool Palette的Internet类别中。

注意:这些步骤是一次性安装说明。套接字组件应该可用于所有未来的项目。

如果您以后想将代码切换到不同的套接字组件,则必须相应地重新编写套接字代码。

于 2015-10-22T03:28:01.020 回答