当前位置: 技术问答>linux和unix
用socket的send发送一个自定义类的问题
来源: 互联网 发布时间:2016-01-24
本文导语: 用socket的send发送一个自定义类,类大概如下: class msg { public: int length; char data[100]; ...... } length是发送字符数组的长度 输入的字符...
用socket的send发送一个自定义类,类大概如下:
class msg
{
public:
int length;
char data[100];
......
}
length是发送字符数组的长度
输入的字符用strcopy给data能发送和接收,缺点是data是固定大小的。
我想让data的大小随发送字符的多少而变化,尝试根据length大小用new进行分配,然后strcopy,不能成功,我想原因是data此时只是指向堆的指针,请问要实现我的想法,有没有其他的方法?
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);
........
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);
........
|
楼上的方法已经很简明了