如何解决通过套接字传递动态数组
我对套接字编程还很陌生,我有一个可以发送固定大小数据包的应用程序。 我希望能够使用向量在本地存储这些消息结构,然后通过SOCK_STREAM连接发送所有这些消息结构。在我看来,我需要将向量转换为静态数组才能执行此操作。我写了一些测试代码只是为了看看是否可以创建一个带有向量的类,该向量可以导入和导出无效向量数据。将向量转换为void *不是问题,而是将其转换回去。以下是我的最佳尝试和输出。
library(dplyr)
df$state <- factor(df$state,levels = unique(df$state))
df2 <- group_split(df)
输出
#include <iostream>
#include <vector>
#include <memory>
#include <string.h>
using namespace std;
struct Message
{
struct MessageHeader
{
int thing1,thing2,thing3;
} header;
struct MessageData
{
char text[256];
} data;
};
class MsgMgr
{
public:
std::vector < Message > vec;
size_t getVoidData (void *data)
{
size_t sz = vec.size () * sizeof (Message);
data = new Message[vec.size ()];
memcpy (data,static_cast < void *>(vec.data ()),sz);
return vec.size ();
}
void importVoidData (void *data,size_t msgCount)
{
std::vector < Message > temp;
temp.assign (msgCount,reinterpret_cast < std::vector < Message > &>(data));
}
};
int main ()
{
Message m;
m.header = {2,3,4};
strcpy (m.data.text,"This is a test");
MsgMgr mgr;
for (int i = 0; i < 100; ++i)
mgr.vec.push_back (m);
void *txContainer = 0;
size_t msgCount = mgr.getVoidData (txContainer);
MsgMgr mgr2;
mgr2.importVoidData (txContainer,msgCount);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。