c++ - 如何处理连接到 CPP 中服务器的多个客户端?

标签 c++ multithreading server winsock2

<分区>

我正在尝试通过遵循 tutorial 来学习 winsock2 .问题是它告诉您处理多个客户端的最后一节有空代码。如何以优雅的方式通过多线程实现这一点?

代码:https://pastebin.com/D3L8CgAi

Since links to pastebin must be accompanied by code, I need to add this.

最佳答案

澄清一下:我不会使用线程来处理多个客户端。

针对您的问题:

  • 1 个线程应该监听新连接。
  • 当一个连接被接受时,一个新的套接字被创建。
  • 对于每个接受的套接字:创建一个线程来读取/写入该套接字。

我不会以这种方式实现它的原因是它无法很好地扩展。在约 100 个并发连接(可能更多,也可能更少)后,进程将因内存不足而崩溃。 (线程很昂贵)。

谷歌“multi thread socket windows C++”你应该找到很多例子,包括带解释的视频。

如果你真的想创建一个可伸缩的服务器审查库,如 libevent(它包装了 epoll 等异步机制)。

关于c++ - 如何处理连接到 CPP 中服务器的多个客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367765/

相关文章:

c++ - Arduino IDE - 按下按钮时停止重复 'Serial.println'

c++ - Qt creator找不到,QTcpServer和QTcpSocket

java - 使用图形填充颜色时出现 StackOverFlowException - 包含代码

python - 如何在Python中跨线程维护全局变量?

php - 在 php 服务器中运行浏览器同步

c++ - 从 .srt 文件中读取时间字符串并更改它的函数

C++11 std::forward 一个指针

java - 使用 Java 并发读取大文件 (2GB) 并写入另一个文件

ubuntu - 即使系统与服务器断开连接,如何在服务器上运行我的深度学习模型而不中断?

javascript - Mac OS X 上的本地主机 :8080 is not loaded for Node. js