最简单的TCP网络封包解包(补充)-序列化

时间:2015-01-20 11:13:32
【文件属性】:

文件名称:最简单的TCP网络封包解包(补充)-序列化

文件大小:13KB

文件格式:RAR

更新时间:2015-01-20 11:13:32

socket 序列化

将数据能够在TCP中进行传输的两种方法 1.直接拷贝struct就可以了; 2.序列化。 拷贝Struct存在的问题 1.不能应付可变长类型的数据,比如STL中的那些容器,当然,STL的容器归根到底就是一个class,他们的长度都是不确定的; 2.内存对齐的问题,Windows默认的对齐是4字节,如果不去刻意关闭掉对齐的话,那么可能会多出不少没必要的字节数,但是如果关闭了,内存拷贝又会慢一些。 序列化是怎么序列化的? 其实很简单,我们使用一个uint8类型的数组,假设我们这里有一个uint16类型的数据,那么我们就把它拷贝进去uint8的数组里面,那么它就占了两个元素。这是最基本的规则。具体请参考代码里面的ByteBuffer::append()方法。而那些class神马的,我们只要按照自己设定的规则顺序拷贝进去就可以了。这个在BytBuffer里面默认支持了常用的STL容器,可以参看代码。


【文件预览】:
testByteBuffer
----testTCPClient()
--------testTCPClient.sln(1000B)
--------testTCPClient()
----Common()
--------TypeDefine.h(499B)
--------ByteBuffer.h(10KB)
--------NetDefine.h(1KB)
----testTCPServer()
--------testTCPServer.sln(1000B)
--------testTCPServer()

网友评论

  • 很不错的入门代码
  • 不错哦 对于新手很有帮助
  • 代码有点简单,结构体如果有指针 不适合