C++套接字编程: creating multiple streams

标签 c++ sockets stream

我正在开发一个应用程序,在创建套接字后以监听器和调用者模式启动多个流。现在,如果我启动一个流,进程就会挂起,因为流正在等待数据。所以我很清楚,我需要在异步进程中启动流,以便应用程序的其余部分继续工作。

我是否开始直播:

  • 独立线程
  • 使用fork分离进程
  • 还阅读了有关 select 的内容,它会起作用吗
  • 阻塞/非阻塞套接字是否解决了这个问题。

此应用程序是用 C++ 完成的。

最佳答案

您可以使用像 Boost.Asio 这样的库或 C 函数 poll()(或做基本相同事情的 select())来等待多个 socket 一次。无论哪种方式,您都希望“多路复用”套接字,这意味着您阻塞直到其中任何一个有可用数据,然后您从那个套接字中读取。这是构建了多少网络应用程序,并且通常比为每个连接使用一个线程或进程更高效、更可扩展且更不容易出错。

关于C++套接字编程: creating multiple streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50302582/

相关文章:

c++ - LZ4 压缩的源代码是否兼容 64 位?

C++ 从模板中获取函数名称

python - 如何同时处理 ipv4 和 ipv6 客户端请求

c - 为什么 Apache MPM prefork.c 使用互斥量来保护 accept()?

µ Controller 上的 C 编程 : printf() and FDEV_SETUP_STREAM?

android - 中断 HttpURLConnection 请求 Android

c++ - 错误: use of class template 'blocked_range' requires template arguments

c++ - Qt 在寻找匹配项时出现意外的 EOF

c# - TcpClient 已连接但服务器未收到消息

javascript - 检查流中的对象是否是可观察的