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");
}
誰かが私の間違いを教えてくれたら本当にありがたいです。