博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket传输类对象
阅读量:4298 次
发布时间:2019-05-27

本文共 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/

你可能感兴趣的文章
Expanding User-Defined Runtime Attributes in Xcode with Objective-C
查看>>
iOS7 UITabBar自定义选中图片显示为默认蓝色的Bug
查看>>
提升UITableView性能-复杂页面的优化
查看>>
25 iOS App Performance Tips & Tricks
查看>>
那些好用的iOS开发工具
查看>>
iOS最佳实践
查看>>
使用CFStringTransform将汉字转换为拼音
查看>>
更轻量的 View Controllers
查看>>
Chisel-LLDB命令插件,让调试更Easy
查看>>
时间格式化hh:mm:ss和HH:mm:ss区别
查看>>
When to use Delegation, Notification, or Observation in iOS
查看>>
Objective-C Autorelease Pool 的实现原理
查看>>
编程语言大牛王垠:编程的智慧,带你少走弯路
查看>>
ios指令集以及基于指令集的app包压缩策略
查看>>
iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试
查看>>
3、JavaWeb学习之基础篇—JSP
查看>>
4、JavaWeb学习之基础篇—Session
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>
reRender属性的使用
查看>>