请问是不是流指针的问题。请帮帮忙。
这是在socket服务端(用的是多线程)中的一段程序,我本来是用流来传的,但失败了。
就用缓冲区了。
static long jpgsize;
unsigned long buffersize=0;
char buffer[4097];
TJPEGImage *Jpeg=new TJPEGImage();
TMemoryStream *pms =new TMemoryStream();
TWinSocketStream *pStream;
if(ReceiveStr=="可以发送jpg文件总长度了")
{
Jpeg->LoadFromFile("10.jpg");
Jpeg->SaveToStream(pms);
pms->SaveToFile("40.jpg"); //这里倒还可以存储;
Jpeg->Free();
pms->Position=0; //????????????
jpgsize=pms->Size;
AnsiString ConverStr="@size:"+IntToStr(jpgsize);
pStream->WriteBuffer(ConverStr.c_str(),ConverStr.Length()); //发送文件长度到客户端;
}//这里从客户端反映出来字节长度都是对的。
if(ReceiveStr=="已收到文件长度,可以发送文件了")
{
pms->Position=0;
pms->SaveToFile("30.jpg"); //把10.jpg存成30.jpg居然字节为零。好象这里的pms流根本就没有建成;why???????
do{
buffersize=pms->Read(buffer,4096);
if(buffersize>0)
{
buffer[buffersize]=0;
pStream->WriteBuffer(buffer,buffersize);
}
}while(buffersize==4096);
}
请问在csdn混的GG,JJ,DD,MM为什么不可以存储30.jpg?
pms流一直没有Clear()掉,流指针不是复位了吗?
是不是流创建错了?在此谢过。