您的位置:首页 > 其它

socket传输类对象

2015-12-24 16:38 288 查看
来源: http://blog.csdn.net/xhwjc2008/article/details/7905011

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: