0
한 PC에서 다른 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 코드 샘플 버튼을 클릭하십시오. –