socket传输类对象

socket中的send函数可以传输char*类型的对象,如果需要传输类对象的话,可以使用CArchive和CMemfile结合的方式来传输。

1.建立CObject类,CObject类或其字类是支持序列化的;

2.先将类通过CArchive和CMemfile序列化成字节流;

3.通过send函数发送CMemfile对象内存块的指针;

4.在服务器端,使用recv函数,接收内存块,并存入缓冲区中;

5.使用CMemfile的attach方法,存入CMemfile对象中;

6.反序列化,得到传输的类对象。

 

发送: 

 CArchive m_ArchiveOut(&m_File, CArchive::store|CArchive::bNoFlushOnDelete);
 pMsg->Serialize(m_ArchiveOut);
 m_ArchiveOut.Flush();

 send(clientfd,(char*)m_File.Detach(),m_File.GetLength(),0); 

接收:

 if ((bytes = recv(socket,(char*)temp,50,0)) < 1)
 {
        printf("Failed to receive bytes from client\n");
 }
 m_File.Attach((BYTE *)temp,32);
 CArchive m_ArchiveIn(&m_File, CArchive::load| CArchive::bNoFlushOnDelete);
 pMsg->Serialize(m_ArchiveIn);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值