我正在尝试使用 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/