无法在 C 网络服务器中加载图像

时间:2021-05-14 18:25:54

标签: html c websocket webserver

我正在尝试通过 http 服务器运行网页,但无法加载图像。但是我可以加载文本和 HTML。请帮我解决这个问题,因为我对此很陌生

截至目前在 HTML 中,我刚刚添加了 HTTP/1.1 200 OK

这就是我得到的enter image description here

以下是 HTML 代码

HTTP/1.1 200 OK

<!DOCTYPE html>
<html>
    <head>
        <title>
            JS QWERTY PAGE
        </title>
    </head>
<body>

<div style="display: flex;flex-wrap: wrap;align-items: center;height: 100vh;justify-content: center;">
    <img src="LOGO.png">
</div>

</body>
</html>

下面是C代码

// Server side C program to demonstrate HTTP Server programming
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>

#define PORT 8080
int main(int argc, char const *argv[])
{
    int server_fd, new_socket;
    long valread;
    struct sockaddr_in address;
    int addrlen = sizeof(address);

    // Only this line has been changed. Everything is same.
    FILE *fp;
    FILE *fimg;
    int c, x;
    char str[500];
    char *ca;
    fimg = fopen("LOGO.png", "rb");
    fp = fopen("public.html", "rb");
    fscanf(fp, "%[^`]", str);
    printf("%s", str);
    ca = str;
    char *hello = str;
    // Creating socket file descriptor
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
    {
        perror("In socket");
        exit(EXIT_FAILURE);
    }

    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);

    memset(address.sin_zero, '\0', sizeof address.sin_zero);

    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0)
    {
        perror("In bind");
        exit(EXIT_FAILURE);
    }
    if (listen(server_fd, 10) < 0)
    {
        perror("In listen");
        exit(EXIT_FAILURE);
    }
    while (1)
    {
        printf("\n+++++++ Waiting for new connection ++++++++\n\n");
        if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0)
        {
            perror("In accept");
            exit(EXIT_FAILURE);
        }

        char buffer[30000] = {0};
        char chstring[40000];
        valread = read(new_socket, buffer, 30000);
        printf("%s\n", buffer);

        /*printf("\nContent of File is:\n\n");
        printf("%s", str); */
        write(new_socket, hello, strlen(hello));
        printf("------------------Hello message sent-------------------");
        close(new_socket);
    }
    return 0;
}

0 个答案:

没有答案
相关问题