HTTP/1.1 服务器实现

问题描述

我已经用 C 编写了一个 HTTP/1.0 服务器。现在我也希望能够为 HTTP/1.1 请求提供服务。 我的 HTTP/1.0 实现如下:-(请注意,我特意删除代码错误处理部分。)

while(1) {
        clientSocket = accept(serverSocket,(struct sockaddr *) &clientName,&clientNameLen);
        pthread_create(&newThread,NULL,serveRequest,(void *) clientSocket);
}

void* serveRequest(void* c){
    char buffer[HTTP_Request_SIZE];
    int clientSocket = (int) c;
    int n = recv(clientSocket,&buffer,HTTP_Request_SIZE,0);

    struct http_message request;
    int status = http_parser(buffer,&request,HTTP_Request);

    char response[HTTP_RESPONSE_SIZE];
    Response responseStruct = generateResponse(&request,status);
    unsigned int responseLength = responsetoString(&responseStruct,response);
    send(clientSocket,response,responseLength*sizeof(char),0);
    close(clientSocket);
}

现在我想将其转换为 HTTP/1.1。我搜索并发现,在 HTTP/1.1 中,我们不会每次都创建新连接,而是在已打开的连接上接收和发送数据。这实际上是如何实施的?上面的代码会如何变化? 我使用 Firefox 作为我的网络客户端。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)