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