如何创建为每个客户端创建新线程的服务器?

时间:2012-04-09 14:02:46

标签: c sockets client-server

我需要创建一个服务器,为每个尝试连接服务器的客户端创建一个新线程。为每个客户端创建的新线程管理客户端,服务器进程侦听来自端口的新连接。

我需要在Unix C中编写代码。这是我需要尽快完成的任务的子任务。我是这个领域的新手,因此对创建服务器知之甚少。

2 个答案:

答案 0 :(得分:1)

基本上,你要找的是这样的:

#include <sys/types.h>
#include <sys/socket.h>
#include <pthread.h>

void* handle_connection(void *arg)
{
    int client_sock = *(int*)arg;
    /* handle the connection using the socket... */
}

int main(void)
{
    /* do the necessary setup, i.e. bind() and listen()... */
    int client_sock;
    pthread_t client_threadid;
    while((client_sock = accept(server_sock, addr, addrlen)) != -1)
    {
        pthread_create(&client_threadid,NULL,handle_connection,&client_sock);
    }
}

这是服务器应用程序的一个非常基本的框架,它为每个传入的客户端连接创建不同的线程。如果您不知道bindlistenaccept是什么,请参阅本地手册的第二部分。

答案 1 :(得分:0)

首先看一下https://computing.llnl.gov/tutorials/pthreads/。这是关于C. Enjoy!的线程库的教程。