Kee*_*eto 5 c sockets client-server server
我试图推理用 C 语言实现的带有套接字的简单服务器如何处理并发客户端。假设一个简单的服务器等待客户端连接,然后读取客户端发送的消息。read() 是一个阻塞函数,因此服务器将阻塞,直到客户端写入它。如果我们假设两个客户端同时向服务器写入数据。服务器会唤醒其中一个,但另一个会发生什么?在处理来自第一个客户端的请求时,服务器是否仍在“监听”?我知道绑定函数采用 int 作为第二个参数来指定积压(默认为 5)。这是否意味着只有 5 个客户端可以同时连接到服务器?如果这是真的,处理多个并发连接的服务器是如何实现的?
你应该线程。通常服务器有一个主线程来监听连接。如果建立连接,主线程将创建另一个线程并将该连接传递给新创建的线程。这样,在主线程仍然能够侦听新连接的同时处理连接。
编辑: 这是listen():
listen(int socket_fd, int backlog)
对于给定的监听套接字,内核维护两个队列: