我希望在linux和windows中进行套接字通信(监听,接受,连接,接收,发送,断开连接)。我的项目是在C中,所以除非有人能想到让我将C ++库集成到C项目中的方法,否则库也必须在C中。
最终,我希望该库具有ipv6支持和非阻塞模式,但是,这些东西并不是必需的。
有谁知道任何库/跨平台示例代码?即使只是大型代码片段也会有所帮助。到目前为止,我发现的少数套接字库都是用C ++编写的。
答案 0 :(得分:9)
副手,我能想到四个图书馆:
GLib framework可以抽象套接字用法,但是您需要特定于平台的代码来创建套接字。
libuv是node.js的平台抽象层,其中包括套接字和异步IO。
答案 1 :(得分:4)
plibsys库提供了所有要求的功能:跨平台和便携,轻量级,提供套接字IPv4和IPv6支持以及许多其他有用的东西,如多线程。在非阻塞模式下使用套接字(尽管您也可以切换到阻塞模式)。有关测试代码示例的相当好的文档。
答案 2 :(得分:3)
我不知道一个符合Windows和Linux的库,但我认为winsock
与Linux套接字编程相似。
特别是它为您提供了选择()'以及提到的其他功能。我想你需要一个非常薄的#ifdef包装来避免类型转换警告。
答案 3 :(得分:0)
答案 4 :(得分:-2)
Ptlib提供适用于套接字的跨平台C ++代码。 www.opalvoip.org
很好地应对线程。一些支持mac和BSD。积极发展和维护。 MPL Ekiga中的核心库 - 首选的SIP和SIP桌面应用程序H.323
对于Windows - 它与MSVC编译。 对于linux,它使用gcc autoconf make等编译。
好的,它是C ++,但你可以使用它...... 在ptlib / samples中有一个源代码 - 在那里有许多使用ptlib的例子。
答案 5 :(得分:-3)
The Boost library包含这些功能。