0

我必须从服务器接收数据。服务器的应用程序是用 VS2008 (MFC) 编写的。只有一种方法可以从服务器 -> 作为 CArchive 对象发送此数据。我无法更改服务器源。

我想用 PHP(通过 tcp)接收这些数据,并将它们转换为 JSON。将CArchive转换为JSON有什么聪明的方法吗?

4

1 回答 1

1

CArchive没有您可以解析的预定义格式。它只是一个依赖于应用程序的二进制文件。你必须知道里面有什么才能知道如何阅读它。一个库可以使读取某些数据类型(CStringCArray等)变得更容易,但我不确定你会找到这样的东西。

以下示例显示了如何CArchive工作(存储部分):

CArchive ar;
int i = 500;
float f = 10.4f;
CString str(_T("string"));
ar << i << f << str;

所以你必须读取二进制数据并以某种方式解释它。这在C++中很容易,因为MFC框架确切地知道如何序列化类型,包括复杂类型,如CStringCArray. 但是您必须使用PHP自己完成此操作。

例如,您可能会在指定偏移处读取 4 个字节并将其解释为int. 接下来的四个字节为float. 然后你必须看看如何加载CString,它先存储长度,然后存储数据,但你必须看看它使用的确切格式。

没有现成/使用CArchive-> JSON转换器。我建议您修改服务器代码以同时生成CArchiveJSON数据

于 2015-04-10T06:56:07.023 回答