socket发送链表给客户端或者服务端
- C/C++ code
// 定义的结构体struct _ATTRIBUTE{ BOOL _bTest; int _iTest; float _fTest; vector<int> _vctTest;};// 发送端_ATTRIBUTE att;att._bTest = TRUE;att._iTest = 888;att._fTest = 3.1415926;att._vctTest.push_back(999);int lenBuff = sizeof(_ATTRIBUTE);char *sendBuf = new char[lenBuff];memcpy(sendBuf, &att, lenBuff);send(m_sockClient, sendBuf, lenBuff, 0);// 接收端SOCKET sock = accept(...);int lenBuff = sizeof(_ATTRIBUTE);char *revcBuff = new char[lenBuff];recv(sockConn, revcBuff, lenBuff, 0);_ATTRIBUTE att;memcpy(&att, revcBuff, lenBuff);// 在这里接受到的数据中 除了_vctTest(vector<int>)不正常外,其他的都是对的// 请问有什么办法能接收一个链表数据吗?[解决办法]
vector 是在堆上保存的数据。
也就是说 vector 是有指针的。
需要复制指针的数据。
手动复制吧。
想自动很难哦。
看看 RPC 中的那些指针你就知道了。
[解决办法]
http://wenku.baidu.com/view/cf4d32eb81c758f5f61f679c.html
memcpy这个函数,楼主有没有考虑到溢出?
先开辟内存,计算接受字符的长度,试试看
[解决办法]
是不是att内部有指针(vector<int> _vctTest),push和pop的时候大小是变化的。
你接收端只有最基本的东西没有给内部的指针分配空间啊。这样memcpy空间没有的话会把偶错的。
[解决办法]
[解决办法]
可以将链表中的数据序列化,然后send发送,接收端接收以后自己解析一下