除了服务器的响应是“RES 状态大小数据”这一事实外,一切正常。我只对 data 感兴趣来创建新文件,但我无法拒绝将RES 状态大小写入输出文件。我试图使用strtok但因为它而得到段错误,不知道为什么。这是我从服务器收到响应并开始将其写入新文件 fp 的代码部分。
while(success == 0)
{
while(f_block_sz = recvfrom(fd2, buffer, sizeof(buffer), 0, (struct sockaddr*)&serveraddr2, &addrlen))
{
if(f_block_sz < 0)
{
printf("Receive file error.\n");
break;
}
int write_sz = fwrite(buffer, sizeof(char), f_block_sz, fp);
if(write_sz < f_block_sz)
{
printf("File write failed.\n");
break;
}
bzero(buffer, LENGTH);
}
printf("ok!\n");
success = 1;
fclose(fp);
}
我甚至不知道什么是最好的。我应该在写入新文件之前删除那些“无用的”单词,还是应该在文件完成后编辑它?
提前致谢。
答案 0 :(得分:1)
我不确定,但我只想到你的“RES状态大小”是固定大小,比如'x'字节,然后写入输出文件时只跳过x字节的接收数据......
int write_sz = fwrite(buffer + x, sizeof(char), f_block_sz, fp);
我不确定这是好的做法,甚至是不正确的,我只是想到了。