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 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导