我正在尝试通过 UDP 套接字接收文本文件,然后再次将其保存为文本文件。代码构建良好,但运行时,输出是一个空白控制台,并且文本文件也没有创建。经过一番研究,我发现我应该将接收到的字节数提供给fwrite
函数,所以我尝试使用该size_t
类型,但它对我没有帮助:(。
这是我的代码片段:
char file_buffer[100];
while(1)
{
// Tranmsit data to get file /
server_length = sizeof(struct sockaddr_in);
if (sendto(sd, send_buffer, (int)strlen(send_buffer) + 1, 0, (struct sockaddr *)&server, server_length) == -1)
{
fprintf(stderr, "Error transmitting data.\n");
closesocket(sd);
WSACleanup();
exit(0);
}
size_t data=0;
if(data=recvfrom(sd, file_buffer, BUFFER_SIZE, 0, (struct sockaddr *) &server, &server_length)<0)
{
printf("Error receiving file.");
exit(1);
}
FILE *fp=NULL;
fp = fopen("new_file.txt","w+");
fwrite(file_buffer, 1, data, fp);
{
printf("Error writing file! \n");
exit(1);
}
fclose(fp);
printf("File received:)\n");
}
如果有人让我知道我的错误是什么,我将不胜感激。