1
ソケットを使用してファイルを転送することはできません。つまり、ファイルを転送することは可能ですが、サイズは常に異なります。転送のためのコードの断片がある:winsockによるファイル転送(C++)
FILE *inFile = fopen(this->FullDir, "r+b");
//FILE *outFile = fopen(this->DeskDir, "w+b");
if (inFile != 0)
{
char* buffer[16384]; //выделяем блок 16Кб
while (!feof(inFile)) //пока не конец файла
{
fread(buffer, 1, sizeof(buffer), inFile); //копируем блок
send(s, (char*)&buffer, sizeof(buffer), 0);//передаём блок
}
}
と受信用:
do
{
msg_len = recv(new_client_socket, (char*)&buffer, MAX_MESSAGE_LENGTH, 0);
fwrite(buffer, 1, sizeof(buffer), output);
} while (msg_len > 0);
ファイルのサイズが2,50Mbあります。サイズは1MBから2,2Mbまで異なります。私のミスはどこですか?
あなたは 'sizeof(buffer)'を書いていますか?つまり、サイズではなくバッファ全体のバイト数です。また、バッファが完全にいっぱいだとは思わない。 – AndyG
私は 'fwrite'を参照しています – AndyG
sizeof(バッファ)とMAX_MESSAGE_LENGTH(16384)を試しましたが、結果は常に同じです –