【发布时间】:2016-11-01 14:37:09
【问题描述】:
我有这个用 c++ 编写的 2 端(客户端和服务器)程序,它基本上是一个“聊天程序”。
所以一侧向另一侧发送数据,另一侧向另一侧发送数据。 我正在使用 C-Sockets (TCP/SOCK_STREAM)。
所以我的问题是,根据我的经验,当服务器正在等待数据(“recv()”)时,它本身无法发送数据,因为 recv 队列是无限的。
我想了两种方法来解决这个问题,但我不确定它是否值得花时间。因为可能有一个简单的解决方案,我也太笨了。
- 使它成为一个 6 面连接,这意味着我有一个“物理服务器”,我的服务器在四个实例中运行,每个客户端两次(发送和接收)。因此,如果一个服务器接收到数据,它将数据存储在一个文件中,以便另一个客户端的发送服务器读取并发送它。反过来也一样。
由于这个解决方案听起来很糟糕,我可能不会接受。
- 使用多线程。就像我听说纯癌症一样,你不应该使用它,除非你必须这样做。
所以我的问题是,我必须这样做吗?还是有一个简单的解决方案?
【问题讨论】:
标签: c++ multithreading sockets