首页 文章

实现fwrite以从socket获取日期时出错

提问于
浏览
1

我看到了很多例子,但没有一个解决我想要完成的事情 . 我需要从套接字读取字节并将它们写入文件 . 在这个Code Project blog中,我看到客户端脚本中的while循环遍历读取调用:

while((n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)

所以我修改了代码 fputs(recvBuff, f1) ,其中 f1 是指向pdf文件的指针 . pdf文件也是一个文件,我可以让fwrite工作 . 我最后修改我的代码,使其类似于一些示例来测试它,但无济于事 .

如果在fwrite中,第一个参数是'data',我将如何传递它?我已经在上面的while循环中尝试了read()调用,但它似乎返回一个整数而不是字节流 . 有任何想法吗?

我是编程的新手,但我是C的新手,并希望在正确的方向上有所推动 . 谢谢 .

1 回答

  • 2

    你想要更像这样的东西 . fwrite 不返回流,它返回成功写入的项目数(即第3个参数) . 在这种情况下,"item"是一个字符,您正在尝试编写"bytesRead"个数字 . 良好的形式要求您应该检查结果 fread 返回的结果是否与您写入的请求相同但是这很少在磁盘文件上失败,因此很多人在非关键情况下跳过它 . 您可能想要自己添加 .

    FILE *f1;
     int  sockfd;
    char recvBuff[4096];
    
    size_t  bytesWritten;
    ssize_t bytesRead;
    
    while((bytesRead = read(sockfd, recvBuff, sizeof(recvBuff))) > 0)
        bytesWritten = fwrite(recvBuff, 1, bytesRead, f1);
    

相关问题