是否有任何免费的开源库(在C / C ++中)用于广泛使用的套接字,并支持广泛的操作系统(Windows,Unix / Linux,FreeBSD等)。就像pthreads一样。
否则剩下的唯一解决方案是为每个操作系统编写套接字包装器。或者编写一个针对winsock和GNU C sys / socket.h库的包装器就足够了吗?
我是不是可以针对GNU C提供的套接字库实现它.GNU C可用于各种平台,我的代码可以在所有这些平台上运行吗?
答案 0 :(得分:13)
考虑一下boost?
答案 1 :(得分:8)
答案 2 :(得分:4)
ACE可以帮助您!
本教程概述了ACE OS适配层及其C ++套接字包装器的设计和使用
Developing Efficient and Portable Communication Software with ACE and C++
答案 3 :(得分:3)
是的,你将在Winsock和标准Berkeley套接字周围使用一个包装器。事实上,差异非常小,几乎可以直接在代码中使用#ifdef
。
也就是说,如果您愿意在套接字级别工作。如果你正在追求更抽象的东西,那么当然包装它会让你有机会隐藏差异。
特别是,Winsock:
WSAStartup()
来“启动它”closesocket()
WSAGetLastError()
获取上一个错误,而不是errno
。这些是我头顶的三大主要内容,可能会有更多。
答案 4 :(得分:3)
我相信Apache Portable Runtime和GTK +的GLib库都有套接字API。由于您的问题被标记为c
和c++
,我怀疑您确实需要以C ++为中心的答案,但这两者都是纯粹的C库。
答案 5 :(得分:3)
使用boost :: asio。非常好的图书馆。点击此链接 http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio.html
答案 6 :(得分:3)
您的一些链接:
C++ Sockets Library
C++ Socket library - ComPP 1.3
SimpleSockets
libmsocket
Komodia TCP/IP library
STLplus C++ library
框架
nitro++
答案 7 :(得分:3)
您可以尝试的其他选项是Poco。 Poco还有很多东西,所以如果你需要其它的东西,它也可以提供。
将其与其他工具包进行比较:
只是我的两分钱
答案 8 :(得分:1)
如果你想要一个非常轻的,仅限C ++,iostreams式的BSD套接字包装器,你可以考虑skstream - 它很简单并且效果很好。当然,iostreams界面本身还有很多不足之处。尽管如此,skstream会很好地包装select和非常低级的socket处理。
答案 9 :(得分:-2)
这里只有一个正确答案。 OpenSSL的。因为一旦你有套接字代码,你也想要建立SSL连接。如果您已经在特定的跨平台框架中工作,那么OpenSSL绑定可能已经是可用的。 我认为现在没有太多理由不让SSL / TLS从一开始就启用你的应用程序。