-1

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");        
}

誰かが私の間違いを教えてくれたら本当にありがたいです。

4

1 に答える 1