日期:2014-05-16  浏览次数:20838 次

用socket的send发送一个自定义类的问题
用socket的send发送一个自定义类,类大概如下:
class   msg
{
                public:
                                int   length;
                                char   data[100];
                              ......
}
length是发送字符数组的长度
输入的字符用strcopy给data能发送和接收,缺点是data是固定大小的。

我想让data的大小随发送字符的多少而变化,尝试根据length大小用new进行分配,然后strcopy,不能成功,我想原因是data此时只是指向堆的指针,请问要实现我的想法,有没有其他的方法?

------解决方案--------------------
用new进行分配, msg 的各成员要分别发送
class MSG
{
public:
int length;
char p_data;
......
};

MSG msg;
int len;
msg.p_data = new data [n];

len = htonl(msg.length);
send(sockfd, &len, sizeof(len));
send(sockfd, data, n);
........


------解决方案--------------------
楼上的方法已经很简明了