我真的觉得这会更容易找到......
我需要一个可移植的c ++套接字包装器。我打算将它用于Windows服务器应用程序和将在运行ulinux(或类似的东西)的嵌入式设备上运行的客户端。我会使用Boost,但我需要它是轻量级的,并且易于添加到嵌入式设备项目中。
此外,我希望它是一个“更高级别”的包装器...所以它启动一个后台线程来读取数据并通过回调通知......
有什么想法吗?
答案 0 :(得分:11)
我建议Boost.Asio。尽管名称如此,但您不必使用异步I / O.您可以使用同步I / O和线程,正如您的问题所暗示的那样。
Boost.Asio是一个跨平台的C ++ 用于网络和低级I / O的库 提供开发人员的编程 具有一致的异步模型 使用现代C ++方法。
答案 1 :(得分:7)
只需学会直接使用套接字API。然后,您可以轻松自行包装。这不是 ,你可以开始使用Beej's excellent guide。正如Beej所说:
套接字API,虽然由 伯克利民间,已被移植到很多人 许多平台,包括Unix,Linux, 甚至是Windows。
在他的指南中,他详细介绍了在Windows和* nix系统中获取相同API所需的极少添加。
一旦你学会了,如果你是如此倾向自己包装它。然后你可以准确控制你想要的“轻量级”。
答案 2 :(得分:2)
如果你真的不喜欢Boost asio,那么你可能会喜欢dlib中的套接字支持。从某种意义上讲它更简单,它使用传统的阻塞IO和线程而不是asio的异步主动模式。例如,它可以很容易地创建一个从iostream读取和写入的线程TCP服务器。例如,请参阅此example。或者,如果不充当服务器,您可以制作一个简单的iosockstream。
答案 3 :(得分:2)
我知道这是旧的,但是我在下面的位置有一个非常好用且简单的实现,我用它来供个人使用。一段时间后我实现了自己的包装,但丢失了代码并在网上发现了这个比我的要好得多:
http://cs.ecs.baylor.edu/~donahoo/practical/CSockets/practical/
答案 4 :(得分:1)
看看ENet http://enet.bespin.org/它非常轻巧,便携,可以在UDP之上运行,并可选择支持可靠的数据包。它易于使用,API级别低,性能开销很小。您可以高度控制内存管理,如果网络是您的瓶颈,并且您使用的malloc / new实现在多线程下表现不佳,则可能会很好。
“最佳”实现高级线程并不困难,因为有阻止接收的可选支持,而库是“库”而不是框架,因此您是决策者而不是库。
答案 5 :(得分:0)
也许您可以查看http://www.pt-framework.org/
答案 6 :(得分:0)
老问题,但对于C ++,BSD风格的同步套接字,这是你可以找到的最小行李包装 http://code.google.com/p/ting/source/browse/trunk/src/ting/net/
确实有例外。你可以将一个更轻量级的一个作为一个只有标题的模板库,并且可以使例外可选,但这会改变API一点
POCO网络类非常相似,但需要更多来自Poco lib其他部分的依赖
答案 7 :(得分:0)
我亲自为TCP和Serial套接字创建自己的AsIO包装器,我首先回顾了以下教程:
https://www.gamedev.net/blogs/blog/950-they-dont-teach-this-stuff-in-school/
和
我发现第一个非常有用且易于理解。
答案 8 :(得分:-1)
用它喜欢它。稳定而强大