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

C++ 如何在CPP中处理连接到服务器的多个客户端?,c++,multithreading,server,winsock2,C++,Multithreading,Server,Winsock2,我正试图通过以下方法学习winsock2。问题是,最后一节告诉您如何处理多个客户机,它的代码是空的。如何以一种优雅的方式通过多线程实现这一点 代码: 澄清一下:我不会使用线程来处理多个客户端 关于你的问题: 1线程应侦听新连接 接受连接后,将创建一个新套接字 对于每个接受的套接字:创建一个线程,用于读取/写入该套接字 我之所以不以这种方式实现它,是因为它不能很好地扩展。大约100个并发连接(可能更多,可能更少)后,进程将因内存不足而崩溃。(线程非常昂贵) Google“multi-threa

我正试图通过以下方法学习winsock2。问题是,最后一节告诉您如何处理多个客户机,它的代码是空的。如何以一种优雅的方式通过多线程实现这一点

代码:


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

关于你的问题:

  • 1线程应侦听新连接
  • 接受连接后,将创建一个新套接字
  • 对于每个接受的套接字:创建一个线程,用于读取/写入该套接字
我之所以不以这种方式实现它,是因为它不能很好地扩展。大约100个并发连接(可能更多,可能更少)后,进程将因内存不足而崩溃。(线程非常昂贵)

Google“multi-thread socket windows C++”您应该可以找到许多示例,包括带有说明的视频


如果您真的想创建一个可伸缩的服务器,请查看libevent之类的库(它包装了epoll之类的异步机制)。

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

关于你的问题:

  • 1线程应侦听新连接
  • 接受连接后,将创建一个新套接字
  • 对于每个接受的套接字:创建一个线程,用于读取/写入该套接字
我之所以不以这种方式实现它,是因为它不能很好地扩展。大约100个并发连接(可能更多,可能更少)后,进程将因内存不足而崩溃。(线程非常昂贵)

Google“multi-thread socket windows C++”您应该可以找到许多示例,包括带有说明的视频


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

有很多方法可以回答这个问题,实际上可能会对某些人有害。请描述你做了什么,以及你做了什么来找出如何首先解决问题,最好是用你的示例代码来缩小你的问题的范围。@Paul程序员我已将我的问题更新为有一个pastebin链接。希望它有用。同样的代码也可以在教程页面上找到。有太多的方法来回答这个问题,这实际上可能对尝试的人有害。请描述你做了什么,以及你做了什么来找出如何首先解决问题,最好是用你的示例代码来缩小你的问题的范围。@Paul程序员我已将我的问题更新为有一个pastebin链接。希望它有用。同样的代码也可以在教程页面上找到。虽然每个客户端1个线程确实不能扩展,但如果只有100个并发客户端,它不会失败,但需要更多的客户端才能做到这一点。一台服务器可以轻松地同时处理100多个客户端,甚至1000个客户端(如果在失败之前稍微减小默认堆栈大小)。虽然每个客户端1个线程不能扩展,但如果只有100个并发客户端,它不会失败,但要做到这一点需要更多的客户端。一台服务器可以轻松地同时处理100多个客户端,甚至1000个客户端,如果您在失败之前稍微减小默认堆栈大小的话。
Since links to pastebin must be accompanied by code, I need to add this.