c++如何获得IStream流对象中的数据长度
我通过函数bitmap.Save(pstream,&encoderClsid1,&encoderParameters);来将一个位图转化成jpg形式存入pstream中,...
我通过函数bitmap.Save(pstream, &encoderClsid1, &encoderParameters);
来将一个位图转化成jpg形式存入pstream中,psteam是个IStream的对象指针
现在我想将pstream通过套接字发送,但不知道pstream内的数据长度如何获得,我用socket->Send(pstream,sizeof(pstream));是不行的,sizeof(pstream)得到的不是pstream
对象的数据长度,msdn里面也没有直接获得的函数,请问此时pstream中的数据长度该如何获得? 展开
来将一个位图转化成jpg形式存入pstream中,psteam是个IStream的对象指针
现在我想将pstream通过套接字发送,但不知道pstream内的数据长度如何获得,我用socket->Send(pstream,sizeof(pstream));是不行的,sizeof(pstream)得到的不是pstream
对象的数据长度,msdn里面也没有直接获得的函数,请问此时pstream中的数据长度该如何获得? 展开
1个回答
展开全部
socket->Send(pstream, ... )
本身就是完全错误的
socket 的 send 方法,发送的是二进制数据,pstream指向的istream对象,和istream对象中包含的数据,是两个感念。
另外,获得 istream对象内数据的长度可以通过 istream的seekg和tellg方法获得。
用seekg将当前位置移动到数据的末尾,然后通过tellg获得当前位置,这个位置,就是整个数据的大小。
本身就是完全错误的
socket 的 send 方法,发送的是二进制数据,pstream指向的istream对象,和istream对象中包含的数据,是两个感念。
另外,获得 istream对象内数据的长度可以通过 istream的seekg和tellg方法获得。
用seekg将当前位置移动到数据的末尾,然后通过tellg获得当前位置,这个位置,就是整个数据的大小。
追问
具体该怎么做呢,我该如何发送pstream中的数据,能给个具体的实线方式吗,万分感谢!
追答
pstream->seekg(0, std::ios_base::end);
size_t size = pstream->tellg();
pstream->seekg(0, std::ios_base::beg);
char *buf = new char[size];
pstream->read(buf, size);
socket->Send(buf, size);
delete []buf;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询