I want to receive a file through a TCP socket on Linux. But I just get a empty file. However when I delete line 1 (while), anything will go okay. My code on server looks like this:
while(1)
{
FILE *fp = fopen(file_name, "w");
if(NULL == fp)
{
printf("File:\t%s Can Not Open To Write\n", file_name);
exit(1);
}
bzero(buffer, BUFFER_SIZE);
int length = 0;
while((length = recv(new_server_socket_fd, buffer, BUFFER_SIZE, 0)) > 0)
{
if(fwrite(buffer, sizeof(char), length, fp) < length)
{
printf("File:\t%s Write Failed\n", file_name);
break;
}
bzero(buffer, BUFFER_SIZE);
}
One thing I can make sure is that "if(fwrite(...))" do execude cause I put a putchar('a') out of if() and I can get some "a" on my screen. All data will be transfered through socket new_server_socket_fd
fclose the file before you return.