便携式轻量级C++套接字包装器

rus*_*sbi 17 c++ sockets portability

我真的以为这会更容易找到......

我需要一个可移植的c ++套接字包装器.我打算将它用于Windows服务器应用程序和将在运行ulinux(或类似的东西)的嵌入式设备上运行的客户端.我会使用Boost,但我需要它是轻量级的,并且易于添加到嵌入式设备项目中.

此外,我希望它是一个"更高级别"的包装器...所以它启动一个后台线程来读取数据并通过回调通知...

有任何想法吗?

Sam*_*ler 11

我建议Boost.Asio.尽管名称如此,但您不必使用异步I/O. 您可以使用同步I/O和线程,正如您的问题所暗示的那样.

Boost.Asio是一个用于网络和低级I/O编程的跨平台C++库,它使用现代C++方法为开发人员提供一致的异步模型.

  • 我发现提升对于应该是一项简单的任务来说过于复杂. (8认同)
  • 您认为Boost轻巧吗? (3认同)

Dou*_* T. 7

只需学习直接使用套接字API.然后,您可以轻松自行包装.这并不是辛苦了,你可以开始使用Beej的优秀导游.正如Beej所说:

套接字API虽然由伯克利人开始,但已被移植到许多平台,包括Unix,Linux甚至Windows.

在他的指南中,他详细介绍了在Windows和*nix系统中获取相同API所需的极小添加内容.

一旦你学会了,如果你是如此倾向自己包装它.然后你可以准确控制你想要的"轻量级".

  • 这是一个糟糕的建议.BSD套接字API充满了令人惊讶的陷阱(例如,由于TCP实际上不支持它,因此OOB数据是一个破解的黑客),并且在不同平台之间略有不同.在Windows和Linux上最初可能看起来相同的东西最终会在重要方面有所不同,最终导致重大安全漏洞或未明确考虑的其他问题.即使在Unix系统上,API的实现方式也存在重要而微妙的变化.请参阅Stevens的Unix网络编程,深入讨论这些问题. (24认同)
  • 我知道如何使用它...但它的痛苦在***:) (4认同)