0
我正在寫一個程序從一臺PC發送文件到另一臺。我試圖用char* buffer
發送它,但我遇到了一些問題。我認爲它發送緩衝區,但結果是一個大小爲0千字節的文件。我懷疑我沒有將緩衝區寫入文件,但我確實不知道。我的緩衝區數據來自* bmp文件。我在這裏找到了幾乎同樣的問題,但我真的需要更多的解釋。如何傳輸緩衝區? TTCpServer/TTcpClient
我正在使用C++ Builder 2010,很難找到任何教程。它有各種可能有用的組件和功能。
代碼:
客戶:
void __fastcall TForm1::TcpServer1Accept(TObject *Sender,
TCustomIpClient *ClientSocket)
{
char *buffer;
TcpServer1->ReceiveBuf(buffer, sizeof(buffer), 0);
CreateFile(buffer); //function that creates a file from the buffer
//Drawing my bmp on the form
Slide->LoadFromFile("ScreenShotBorland.bmp");
Image1->Canvas->Draw(0, 0, Slide);
free(buffer);
}
void CreateFile(char *buffer)
{
FILE *fp = NULL;
fp = fopen("teste.bmp", "wb");
if (fp == NULL) {
MessageBox(NULL, "ERRO!", "Error", MB_OK | MB_ICONERROR);
}
fwrite(buffer, 1, sizeof(buffer), fp);
free(buffer);
fclose(fp);
}
服務器:
void __fastcall TForm1::TcpClient1Connect(TObject *Sender)
{
//Open a file to load the buffer
long lSize;
char *buffer;
size_t result;
FILE *pf2 = fopen("teste.bmp", "rb");
if (pf2 == NULL) {
MessageBox(NULL, "ERRO!", "Error", MB_OK | MB_ICONERROR);
}
fseek(pf2, 0, SEEK_END);
lSize = ftell(pf2);
rewind(pf2);
//allocate the buffer in memorie
buffer = (char*) malloc(sizeof(char) * lSize);
if (buffer == NULL)
MessageBox(NULL, "ERRO!", "Error", MB_OK | MB_ICONERROR);
result = fread(buffer, 1, lSize, pf2);
if (result != lSize)
MessageBox(NULL, "ERRO!!!", "Error", MB_OK | MB_ICONERROR);
//Transferring the file
if (TcpClient1->Active)
TcpClient1->SendBuf(buffer, sizeof(buffer), 0);
free(buffer);
fclose(pf2);
}
如果您使用編輯頁面上提供的代碼格式,可以更輕鬆地閱讀您的代碼。突出顯示您的代碼並單擊小101010代碼示例按鈕。 – 2009-11-09 16:36:50