2 台のコンピューター間でファイルを転送するコードを実行しています。接続にはtcpソケットを使用しています。問題は、送信しているファイル バイトに一種のヘッダーを添付して、送信しているものがファイルの一部であることを受信者が認識できるようにする必要があることです。私のヘッダーがdata
. 送信する文字列は次のとおりdata <file bytes>
です。
私はそれらを送信でき、受信者はそれらを受信できますが、ファイルが破損しているようです。フォーマットされていないテキストファイルの場合はうまく機能しますが、他のファイルの場合はファイルを効率的に解析していないようです.
while(1){
fp = (char*) malloc (56);
rc = recv(connfd,fp,55,0);
if(strcmp(fp,"stop") == 0){
break;
}
fp = fp + 5; //I do this to skip the 'data<space>" header
wr = write(fd,pf2,rc-5);
tot = tot + wr;
printf("Received a total of %d bytes rc = %d \n",tot, rc);
}
しかし、ヘッダーなしでファイルを送信しようとしましたが、ファイルは破損していませんが、この特定のコードにはこれらの「データ」ヘッダーを使用する必要があります。私は何を間違っていますか?