通过套接字传递动态数组

问题描述

我对套接字编程还很陌生,我有一个可以发送固定大小数据包的应用程序。 我希望能够使用向量在本地存储这些消息结构,然后通过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 (将#修改为@)