static int shi=0, emod=0, hui=0, x=0, a=0, i=0; // 狀態機變數
AnsiString filename;
TMemoryStream *pms = new TMemoryStream(); // 接收緩衝
void *z[20000]; // 20KB 收發緩衝
void __fastcall TForm1::ServerClientRead(TObject *Sender, TCustomWinSocket *Socket)
{
if (shi != 1) { // 非最後一塊
Socket->ReceiveBuf(z, 20000);
pms->Position = a;
pms->WriteBuffer(z, 20000);
a += 20000;
// 觸發發送端重連發送下一塊
ClientSocket->Active = false;
ClientSocket->Port = 8888;
ClientSocket->Active = true;
} else { // 最後一塊
pms->WriteBuffer(z, emod);
pms->SaveToFile("d:\\k.bmp");
pms->Position = 0;
Image1->Picture->Bitmap->LoadFromStream(pms); // 顯示驗證
Label1->Caption = "successful";
}
}
本文展示核心思想:客戶端主動分塊、伺服端 `TMemoryStream` 累積重組、斷點記錄 (`a`)、最後塊特殊處理。