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

How to handle multiple clients connected to a server in CPP?

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

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

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

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

你的问题:

  • 1 个线程应侦听新连接。
  • 接受连接后,将创建一个新套接字。
  • 对于每个已接受的套接字:为 reading/writing 创建到该套接字的线程。

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

Google "multi thread socket windows C++" 您应该会找到许多示例,包括带有解释的视频。

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