1

抱歉,如果这是一个愚蠢的问题,但我对 C 有点缺乏经验。我正在尝试创建一个简单的 TCP 客户端/服务器连接。它是这样工作的:服务器存储多个文件,包括 .txt 和 .jpg。当客户端需要其中一个时,他将文件名发送到服务器,读取并写入到某个位置。

一切正常,除了服务器的响应是 "RES status size 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);
    }

我什至不知道什么是最好的。我应该在写入新文件之前删除那些“无用”的词,还是应该在文件完成后编辑文件?

提前致谢。

4

1 回答 1

1

我不确定,但我只是想如果你的“RES 状态大小”是固定大小的,比如“x”字节,那么在写入输出文件时,只需跳过 x 字节的接收数据......

int write_sz = fwrite(buffer + x, sizeof(char), f_block_sz, fp);

我不确定这是一个好的做法,甚至是正确的,我只是考虑了一下。

于 2013-10-10T05:57:28.563 回答