【问题标题】:Read input from stdin as well as ready to receive broadcast from server从标准输入读取输入并准备好接收来自服务器的广播
【发布时间】:2016-02-16 05:13:29
【问题描述】:

我有一台服务器,它监听连接的客户端并将其广播给所有其他连接的客户端。但是另一方面,客户端应该监听广播服务器正在发送,并且它必须能够从标准输入读取输入并发送到服务器进行广播。我有点困惑。我正在用 C++ 做这个。

【问题讨论】:

  • 看看多线程,从不同的线程收集输入数据,使用消息传递或事件将数据提供给发送线程
  • 这意味着我必须以循环方式唤醒线程。一个检查来自 STDIN 的输入和另一个来自服务器的输入??
  • 等待服务器数据和标准输入的调用都会阻塞,并在数据准备好时自动唤醒线程

标签: c++ sockets client-server broadcast


【解决方案1】:

从多个文件描述符中读取有两种模式

  • 按照 Phil Williams 的建议使用线程
  • 使用像 select()poll() 这样的轮询机制。

我认为使用select()poll() 是解决问题的更好方法。

文件描述符集是传递给select() 的参数,它会等待其中一个准备好进行读取或写入。 select()的使用方法网上有很多例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2013-03-30
    • 2012-02-17
    • 1970-01-01
    • 2015-01-31
    • 2011-11-15
    相关资源
    最近更新 更多