c++ - 对于客户端服务器程序,并行接收多个客户端连接请求的最佳方法是什么?

标签 c++ c linux sockets client-server

该程序是在 Linux 上用 C 语言开发的客户端服务器套接字应用程序。每个客户端都连接到一个远程服务器并将其自身记录为在线。在任何给定时间点很可能有多个客户端在线,所有客户端都尝试连接到服务器以将自己记录为在线/忙碌/空闲等。那么服务器如何处理这些并发请求。什么是好的设计方法(也许每个连接请求 fork /多线程?)?

最佳答案

就我个人而言,我会为服务器使用事件驱动方法。在那里您注册一个回调,一旦连接到达就会调用该回调。以及每当套接字准备好读取或写入时的事件回调。

与线程相比,有了大量连接,您将获得巨大的性能和资源优势。但我也更喜欢这样,因为连接数较少。

只有当您确实需要使用多个核心,或者您有一些可能需要更长时间处理的请求,并且在没有线程的情况下处理它太复杂时,我才会使用线程。

我用libev作为处理事件驱动网络的基础库。

关于c++ - 对于客户端服务器程序,并行接收多个客户端连接请求的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14651181/

相关文章:

android - 为什么无法在Android上使用Qt在app目录中创建多个文件

c++ - 二进制数与十进制数的转换

c - 检查 gdb 中的命令?

java - emacs 上的 geben 和 xdebug

linux - 在 yocto 中使用 bitbake menuconfig 进行内核配置?

c++ - MFC DLL 的 GUI 线束?

c++ - unordered_map emplace - 如何就地创建对象

c - 如何将动态分配的字符串添加到 C 中的字符串数组中?

c - C中没有固定大小的字符数组

linux - 没有功能键的扩展到重复的监控脚本