C 如何使多客户端服务器具有更多功能?

C 如何使多客户端服务器具有更多功能?,c,multithreading,tcp,pthreads,C,Multithreading,Tcp,Pthreads,我是TCP服务器客户端程序的新手。我想用C语言开发一个应用程序来验证客户端并从服务器接收数据。我知道我需要使用线程来处理多个客户端。但我关心的是如何通过线程调用服务器端的每个函数,或者是否需要在服务器中创建更多的线程(比如工作线程来完成每个函数)。我有一个服务器,它有很多函数,比如fun1(),fun2(),fun3(),fun4()来处理客户机数据。所以,当我使用线程时,会有任何问题或延迟吗?因为当多个客户端同时出现时,服务器如何处理这种情况?我发展了一种逻辑,比如 server fun {

我是TCP服务器客户端程序的新手。我想用C语言开发一个应用程序来验证客户端并从服务器接收数据。我知道我需要使用线程来处理多个客户端。但我关心的是如何通过线程调用服务器端的每个函数,或者是否需要在服务器中创建更多的线程(比如工作线程来完成每个函数)。我有一个服务器,它有很多函数,比如fun1(),fun2(),fun3(),fun4()来处理客户机数据。所以,当我使用线程时,会有任何问题或延迟吗?因为当多个客户端同时出现时,服务器如何处理这种情况?我发展了一种逻辑,比如

server fun
{
 //thread function calling fun1()
}

void *fun1(void *arg)
{
  fun2()
  pthread_exit((void*)xx)
} 
fun2()
{
  fun3()
}

fun3()
{
}

当您使用C时,必须对传入连接使用函数accept。accept是一个阻塞函数,因此它会等待连接建立。此函数的返回参数是套接字

所以,accept之后的下一个语句应该是使用套接字的输入参数创建一个线程。在你的线程中,你可以调用你的函数fun1,fun2

当然有一点延迟,但只是毫秒。当多个客户端要连接时,它们将排队


并行服务器而不是串行服务器的优点是一个客户端不能阻止您的服务。

线程不是必需的,您可以使用'epoll',这里有一个示例