我正在做一个将在两台计算机之间传输文件的代码。我正在使用 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);
}
但是我尝试发送不带标头的文件并且我得到了未损坏的文件,但我需要为这个特定的代码使用那些“数据”标头。我究竟做错了什么?