将struct从一个进程转移到另一个进程的最佳方法?

时间:2011-08-18 11:31:43

标签: c++ multithreading winapi

我有一个服务器进程和一些客户端,客户端需要尽可能多地向服务器发送结构,他们不会等待任何答案,只需发送和发送。在这种情况下,我可以通过哪种方式传输下一个结构:

typedef struct tagTDATA {
         BYTE c1;
         DWORD dw1;
         DWORD dw2;
         char ch[255];
} TDATA, *PTDATA;

不能使用Boost。 Win API的最佳方式。我不需要代码解决方案只是指向正确的方向。感谢。

5 个答案:

答案 0 :(得分:0)

根据我的理解,您可以通过实现共享队列来解决此问题。问题的模式更倾向于Producer Consumer Problem

你也可以采取这些例子

答案 1 :(得分:0)

服务器和客户端是否在不同的主机上?如果是这样,为什么不采用UDP和方法来序列化您的结构以通过网络发送,第二个方法将其恢复到结构? ...

答案 2 :(得分:0)

WM_COPYDATA专门用于在进程之间传输结构。看看吧。

你提到了指针 - 不,你不能指望在进程之间工作的指针。如果您有可变长度数组或指针,则可能需要序列化数据,例如使用BSON或XML。

答案 3 :(得分:0)

听起来您正在寻找异步IPC机制。套接字可能是实现这一目标的最简单方法。管道将是另一个明显的选择,并且有许多更高级别的库可用,但我认为套接字听起来最合适。

答案 4 :(得分:-1)

ReadProcessMemory和WriteProcessMemory应该能够为你做到这一点。