c++ socket 如何将一个对象发送给客户端?

classuser{stringname;stringpassword;stringsex;stringage;}网上查到是要序列化,求例子... class user
{
string name;
string password;
string sex;
string age;
}
网上查到是要序列化,求例子
展开
 我来答
Nor_yourgodsy
推荐于2018-04-06 · TA获得超过1.8万个赞
知道大有可为答主
回答量:3659
采纳率:82%
帮助的人:286万
展开全部
可以传递结构体,比如:
struct A
{
int a;
int b;
};

struct A a;
send(s,(char*)&a,sizeof(a),0);

另一方接收到数据到buffer后,如buffer的字节长度为buufersize,则
struct b;
memcpy(&b, buffer, buffersize);
就传过去了。
有你的晴天12138
推荐于2016-08-01 · TA获得超过1001个赞
知道小有建树答主
回答量:305
采纳率:80%
帮助的人:208万
展开全部

如你所说,可以使用序列化,将user对象序列化成一个流,收到后再进行反序列化。

举一个小例子,这是序列化的思想,LZ可以理解并完善之:


class CArchive;
struct ISerialize
{
virtual void Serialize(CArchive &arch)   = 0;
virtual void UnSerialize(CArchive &arch) = 0;
};

class CArchive
{
public:
CArchive(char *buff, int nLen)
{
m_szBuff  = szBuff;
m_nLen    = nLen;
m_nOffset = 0;
}

CArchive &operator <<(ISerialize &data)
{
data.Serialize();
return *this;
}

CArchive &operator <<(const string &str)
{
memcpy(m_szBuff + m_nOffset, str.c_str(), str.length() + 1);
m_nOffset += str.length() + 1;
return *this;
}

CArchive &operator >>(ISerialize &data)
{
data.UnSerialize();
return *this;
}

CArchive &operator >>(string &str)
{
}

private:
char* m_szBuff;
int m_nLen;
int m_nOffset;
};

class CUser : public ISerialize
{
string name;
string password;
string sex;
string age;

private:
        // 实现 CUser 对象的序列化,会被存储到 CArchive 对象中
virtual void Serialize(CArchive &arch)
{
arch << name << password << sex << age;
}

virtual void UnSerialize(CArchive &arch)
{
arch >> name >> password >> sex >> age;
}
};

int main()
{
CUser user;

char szBuff[1024];
CArchive arch(szBuff, 1024);

arch << user;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友af84c79
2014-04-14 · TA获得超过209个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:199万
展开全部
第一种 打包 利用三方控件 比如json。第二种 自定义序列化流
追问
有例子吗,能在哪里找到例子?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a3e0812
2014-04-14 · 超过23用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:62.5万
展开全部
用这个函数send就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式