本文共 694 字,大约阅读时间需要 2 分钟。
来源:
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);
转载地址:http://urnws.baihongyu.com/