当通信的两端都基于 erlang 并且文档清楚地表明使用 {packet, N} 附加一个带有消息大小的标头并且 gen_tcp:recv/2 在接收时删除标头时,我已经工作过。这很简单。但是,如果接收程序不是基于 erlang,而是基于 c++,我如何只解析标头并知道消息的大小,以便我可以分配该内存量。一直用到现在
//Receive a message from client
while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 )
{
//end of string marker
client_message[read_size] = '\0';
write(sock , client_message , strlen(client_message));
//clear the message buffer
memset(client_message, 0, 2000);
}
但不确定如何获取该标头,然后使用 ei_module 获取真正的解码值。
这就是我解码消息的方式。
此处的代码 这是客户端使用选项 {packet,0} 连接时,因此没有带有大小的标头。为了允许动态内存分配,我开始使用 {packet, N} 但不确定如何读取该标头?先感谢您。