ETZhangsx 2019-04-01 17:27 采纳率: 0%
浏览 203

想问一下使用socket实现http访问图片,读写过程应该是怎么样的?

这个是我写的实现传送图片的的过程,header成功传递,浏览器能读出文件大小,可是无法访问图片,是读写的过程出了问题吗?

void sendJPG(int *sock, char *filename) {
    int client_sock = *sock;
    char buffer[buffer_size];
    FILE *fp;
    FILE *fw;
    fp = fopen(filename, "rb");

    fseek(fp, 0L, SEEK_END);
    int len = ftell(fp);

    string status = "HTTP/1.1 200 OK\r\n";
    string header = "Server: A Simple Web Server\r\nContent-Type: image/jpeg\r\n";
    header += "Content-Range: bytes ";
    header += to_string(0);
    header += "-";
    header += to_string(len - 1);
    header += "/";
    header += to_string(len);
    header += "\r\n";
    header += "Content-Length: ";
    header += to_string(len);
    header += "\r\n\r\n";
    write(client_sock, status.c_str(), status.length());
    write(client_sock, header.c_str(), header.length());

    if (NULL == fp) {
        sendError(sock);
        close(client_sock);
        handleError("open file failed");
        return;
    }

    printf("Sending img\n");
    fw = fdopen(client_sock, "w");
    fread(buffer, sizeof(char), sizeof(buffer), fp);
    while (!feof(fp)) {
        fwrite(buffer, sizeof(char), sizeof(buffer), fw);
        fread(buffer, sizeof(char), sizeof(buffer), fp);
    }

    printf("Finish sending\n");

    fclose(fw);
    fclose(fp);
    close(client_sock);
}
  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:22
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料