C++ 如何在Clojure中创建C风格的结构?

C++ 如何在Clojure中创建C风格的结构?,c++,sockets,clojure,struct,C++,Sockets,Clojure,Struct,我试图在Culjure中创建C风格结构,因此我可以调用Culjule. < /P>中的一个文档不足的C++ API。 该API设计用于发送和接收前面带有C头结构(坏)的序列化protobuf消息(好消息)。初始握手是一个RPCHandshakeHeader结构,下面的代码大致描述了该过程: struct RPCHandshakeHeader { char magic[8]; int version; static const char REQUEST_MAGIC[9];

我试图在Culjure中创建C风格结构,因此我可以调用Culjule. < /P>中的一个文档不足的C++ API。 该API设计用于发送和接收前面带有C头结构(坏)的序列化protobuf消息(好消息)。初始握手是一个RPCHandshakeHeader结构,下面的代码大致描述了该过程:

struct RPCHandshakeHeader {
    char magic[8];
    int version;

    static const char REQUEST_MAGIC[9];
    static const char RESPONSE_MAGIC[9];
};
[...snip...]

const char RPCHandshakeHeader::REQUEST_MAGIC[9] = "FooBar?\n";
[...snip...]

RPCHandshakeHeader header;
memcpy(header.magic, RPCHandshakeHeader::REQUEST_MAGIC, sizeof(header.magic));
header.version = 1;

socket = new CActiveSocket();
socket->Initialize();
socket->Open((const uint8 *)"localhost", 5000);

socket->Send((uint8*)&header, sizeof(header));
[...code to read response...]
我如何在clojure中做到这一点?我需要使用/JNI吗


有没有办法创建一个C结构,将它转换成二进制文件,然后通过套接字发送?(我想这就是我需要做的)

听起来像是我的工作!我不知道API这一部分的细节,但您需要特别了解
编译框架
,以及字符串的
重复

回答得好!我唯一的一点是不支持小endian,尽管制作endian交换函数并不困难。谢谢:)