c - 如何将套接字文件描述符放入缓冲区并继续接受传入连接?

标签 c linux multithreading pthreads

我正在尝试使用 Pthreads 用 C 语言设计一个多线程 Web 服务器,但在接受更多传入连接而不提供服务时遇到问题。

我想将每个收到的连接的文件描述符放在一个缓冲区中以供线程处理,我使用默认的accept(2)来接受客户端连接。

我应该使用 select 吗?有什么建议吗?

最佳答案

执行多线程服务器的常见方法是在接受新连接后立即创建一个新线程,并将新套接字传递给该线程。像这样的事情:

int main(int argc, char *argv[])
{
    /* ... */
    int client_socket = accept(server_socket);

    pthread_create(&thread, NULL, my_connection_handler, (void *) client_socket);
    /* ... */
}

void *my_connection_handler(void *argp)
{
    int socket = (int) argp;

    write(socket, "Hello!\r\n", 8);

    close(socket);

    return NULL;
}

关于c - 如何将套接字文件描述符放入缓冲区并继续接受传入连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834013/

相关文章:

c# - MP3在单独的线程中播放

c - 变量的地址低于指针的地址?

与程序的输出混淆

c - 使用多个小数组代替大数组

linux 2.6调度与抢占——preempt_count的使用

java - session 范围内的 Spring bean 的外部线程回调

c - xpath 表达式中缺失属性的默认值

ruby-on-rails - 如何在 centOS 上安装 ruby​​-oci8?

linux - 监视文件夹树的更改并在创建文件时运行脚本 - linux

python - python 中的多处理并不比顺序处理快——我尝试使用 Pool、Queue 和 Pipe。为什么?