c++ - 使用 UNIX 套接字,如何在能够发送数据的同时等待数据?

标签 c++ sockets

我有一个使用 C++ 的服务器,它使用 UNIX 套接字,当前阻塞来自单个客户端的 read() 调用。我希望能够扩展服务器,以便我可以将一些数据写入套接字,同时仍然能够从套接字读取数据?像 Boost.Thread 这样的线程库是完成此任务的最佳方法,还是有其他更容易/更有效的方法?

最佳答案

您有很多选择。至少四个:

  • 使用选择(/poll/epoll/kqueue)
  • 使用单独的线程进行读/写(pthreads/Boost.Thread)
  • 使用asio
  • 使用异步IO(例如libaio)

最简单的就是你所知道的 :)。所以对我来说 asio 将是一场噩梦,而 epoll 将是小菜一碟。您的里程可能会有所不同。

就效率而言,select 的特定实现替代品很难胜过。

关于c++ - 使用 UNIX 套接字,如何在能够发送数据的同时等待数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473391/

相关文章:

c++ - 在 map C++ 中使用列表

c++ - 类原型(prototype)创建 C++

c++ - 如何在 Windows 上取消等待 select()

java - 套接字中的问题

java - 是否可以在不使用 RMI 的情况下要求服务器端执行某个方法?

Python:单元测试基于套接字的代码?

c++ - GetFileAttributes 因绝对路径而失败

c++ - 使用继承时,带有 CRTP 的 typedef 不起作用

c++ - 如何在 main 中使用指针数组?

C++ CreateThread 不显示结果