图像文件连续发送的问题
客户端如下:
TMemoryStream *pms=new TMemoryStream();
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
ClientSocket1->Address = "127.0.0.1";
ClientSocket1->Port = 3000;
ClientSocket1->Open();
Form1->Caption = "Client 已连接服务器";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
TJPEGImage *jpg = new TJPEGImage();
Bmp->LoadFromFile("d:\\test1.bmp");
Image1->Picture->Bitmap->Assign(Bmp);
jpg->Assign(Bmp);
jpg->CompressionQuality=20;
jpg->Compress();
jpg->SaveToStream(pms);
String StrSize;
StrSize = (String) pms->Size;
ClientSocket1->Socket->SendText(StrSize);
jpg->Free();
Bmp->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
String StrRec;
StrRec = Socket->ReceiveText();
if (StrRec=="read")
{
pms->Position = 0;
Socket->SendStream(pms);
}
if (StrRec=="end" && i==0)
{
i++;
pms->Clear(); //执行到这句出错,各位指点下是什么问题
Button2->Click();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
TJPEGImage *jpg = new TJPEGImage();
Bmp->LoadFromFile("d:\\test2.bmp");
Image1->Picture->Bitmap->Assign(Bmp);
jpg->Assign(Bmp);
jpg->CompressionQuality=20;
jpg->Compress();
pms->Clear();
jpg->SaveToStream(pms);
String StrSize;
StrSize = (String) pms->Size;
ClientSocket1->Socket->SendText(StrSize);
jpg->Free();
Bmp->Free();
}
//---------------------------------------------------------------------------
服务器端:
TMemoryStream *tmpMem=new TMemoryStream();
if (LngSize==0)
{
LngSize = StrToInt(String( Socket->ReceiveText()));
Label1->Caption = "大小:"+IntToStr(LngSize);
Socket->SendText("read");
}
else
{
int IntRecLen;
TJPEGImage *jpg = new TJPEGImage();
IntRecLen = Socket->ReceiveLength();
tmpMem->SetSize(IntRecLen);
IntRecLen = Socket->ReceiveBuf(tmpMem->Memory,IntRecLen );
tmpMem->Position=0;
pms->Position = pms->Size;
pms->CopyFrom(tmpMem,IntRecLen);
if (pms->Size>=LngSize)
{
pms->Position = 0;
jpg->LoadFromStream(pms);
Image1->Picture->Bitmap->Assign(jpg);
LngSize = 0;
jpg->Free();
Socket->SendText("end");
pms->Clear();
}
tmpMem->Free();
}
}
想实现连接发送两个图像文件,但每第二次再操作pms时就出错,请指点