我是 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,...
当然有一点延迟,但只有几毫秒。当多个客户端要连接时,它们会排队。
并行服务器相对于串行服务器的优点是一个客户端无法阻止您的服务。
关于c - 如何制作一个具有更多功能的多客户端服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30049492/