ファイル(任意のタイプ)から読み取り、ソケットにファイルデータ(バイナリデータ)を書き込むc ++コードを書き込もうとしているので、受信者はこのデータを取得してファイルを作成する必要があります。同じデータが表示されます。同じ形式の場合、問題はデータがまだバイナリであり、バイナリデータとしてファイルに書き込まれることです。ネットワークに送信せずにコードをテストした場合、それはうまく機能します!何か案が ?前もって感謝します 。注、この問題に影響する場合は、Ubuntu11.10を使用しています。
クライアント側のコードは次のとおりです。
filer=fopen("a.doc","rb");
fseek (filer , 0 , SEEK_END);
long size;
size = ftell (filer);
rewind (filer);
buffer = (char*) malloc (sizeof(char)*size);
numr=fread(buffer,1,size,filer);
fclose(filer); //some socket code
char buffer2[size];
strcpy(buffer2 , buffer);
n = write(sockfd,buffer2,size);
サーバー側の場合:
n = read(sock,buffer,length);
FILE * filew;
int numw;
filew=fopen("acopy.doc","wb");
numw=fwrite(buffer,1,len,filew);
fclose(filew);