首页 > 解决方案 > 如何在不阻塞事件循环的情况下将前一个 http 请求排队并读取另一个请求?

问题描述

事件循环如下所示:

while(1)
{
    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0)
    {
        perror("In accept");
        exit(EXIT_FAILURE);
    }
    char buffer[30000] = {0};
    valread = read( new_socket , buffer, 30000);
    printf("%s\n",buffer );
}

我打算将之前的 http 请求排队。然后在以后使用

write(new_socket , hello , strlen(hello));
close(new_socket);

但是,只要我不写就读它,我就会被阻塞,所以我无法获取新传入的 http 并将前一个传入队列。实现已经读取的http队列的正确方法是什么?

标签: clinuxsocketshttpserver

解决方案


推荐阅读