什么类似于boost :: asio中的QSocketNotifier?

时间:2014-09-08 12:15:32

标签: c++ qt sockets boost boost-asio

SOCKET sock = generate_socket("fileWizard");
notifier = new QSocketNotifier(sock, QSocketNotifier::Read, this);

connect(notifier, SIGNAL(activate(int)), this, some_slot(int));

SOCKET是一个win32 SOCKET," generate_socket"正在创建一个套接字连接到本地exe,它调用" fileWizard"(不知道函数generate_socket的实现细节)。 使用Qt,我们总是生成套接字并连接信号和插槽,但无法在asio中找到类似的示例。

对socket和asio还不熟悉,请告诉我你需要什么信息。感谢

编辑:

代码的目的是监控SOCKET,如果有任何变化,它将调用回叫。

类似于asio(Daytime.3 - An asynchronous TCP daytime server)的示例 让我迷惑的部分是

1:我怎样才能将SOCKET转换为boost :: asio socket之一?

2:我怎样才能监控套接字的更改"(什么都可读)(我们的老人称之为文件描述符)?通过read_async?

1 个答案:

答案 0 :(得分:1)

  1. Boost.Asio套接字支持通过重载构造函数在现有本机套接字上创建。例如,this构造函数可用于在现有本机套接字(例如Windows basic_stream_socket)之上构建SOCKET
  2. 虽然Boost.Asio没有直接提供Qt的QSocketNotifier类,但Boost.Asio确实使用reactor-style operations支持null_buffers()。这两种方法都允许在事件发生时通知应用程序,例如当数据准备好从文件描述符中读取时。此事件通知功能允许每个事件循环与其他事件循环或第三方库集成。有关使用null_buffers()的完整示例,请参阅官方Boost.Asio non-blocking example