1
我已經寫了這段代碼,它將文本文件的內容讀入緩衝區,並通過套接字發送緩衝區直到文件結束。讀完文本文件的完整內容後fread()失敗
代碼工作正常,並且完成文件發送到套接字後,fread()失敗,但是,根據我的低調,當完整的文件通過套接字發送時,由於條件(while(fpSend!= NULL )),FREAD()不能甚至被稱爲:(
請看看代碼,不要讓我知道如果你看到任何錯誤:(
void sendingFile()
{
FILE *fpSend ;
if((fpSend = fopen("Client0.txt", "r+b")) == NULL)
{
MessageBox(NULL,
"Unable to open the File",
"Error!",
MB_ICONEXCLAMATION |
MB_OK);
exit(EXIT_FAILURE);
}
char file_buffer[2000];
fseek(fpSend, 0, SEEK_END);
size_t file_size = ftell(fpSend);
fseek(fpSend, 0, SEEK_SET);
while(fpSend!=NULL)
{
int bytes_read=0;
if((bytes_read=fread(file_buffer, 1,12, fpSend))<=0)
{
char err[128], bread[128];
itoa(errno,err,10);
itoa(bytes_read,bread,10);
MessageBox(NULL,
"Unable to copy file into buffer",
bread,
MB_ICONEXCLAMATION |
MB_OK);
exit(1);
}
/*MessageBox(NULL,
file_buffer,
"File copied in Buffer",
MB_ICONEXCLAMATION |
MB_OK);*/
if(sendto(socketIdentifier, file_buffer, bytes_read, 0, (struct sockaddr *) &AH_glb_connectedSocket, sizeof(AH_glb_connectedSocket))<0)
{
MessageBox(NULL,
" NOT SENNT!",
"ERROR!",
MB_ICONEXCLAMATION |
MB_OK);
//exit(1);
}
else
{
//sent
}
}
MessageBox(NULL,
"File Sent Successfully!",
"SENT!",
MB_ICONEXCLAMATION |
MB_OK);
fclose(fpSend);
}
你是對的:) – Ayse 2013-05-10 09:11:11