有没有跨平台的C语言Socket库(支持Windows和Linux)?

16

我想在Linux和Windows中进行套接字通信(监听,接受,连接,接收,发送,断开连接)。我的项目是用C语言编写的,所以除非有人能想出一种将C++库集成到C项目中的方法,否则该库也必须使用C语言编写。

最终,我希望该库具有IPv6支持和非阻塞模式,但这些并非必要条件。

是否有人知道任何跨平台的库/示例代码?即使只有大型代码片段也会有所帮助。到目前为止,我找到的几个套接字库都是用C++编写的。

6个回答

10

非常感谢,这是一个很棒的开始。目前,我正在研究libuv,因为它似乎在大小/简洁性和效率之间有一个良好的平衡。出于好奇,你用什么搜索词得到了这些结果?还是你已经知道它们了? - 64bit_twitchyliquid
1
@64bit_twitchyliquid:我不记得我第一次接触GLib是什么时候了,但在我心中,它占据了C标准库的位置,更符合其他语言的要求;当我寻找平台抽象库时,我发现了APR和NSPR,而我知道libuv是由Rust编程语言使用的;实际上,除了libuv之外,所有这些库都列在http://www.shlomifish.org/open-source/portability-libs/上,这是谷歌搜索“*C跨平台抽象库*”的第一个结果。 - Christoph

8

Plibsys库提供了所有所需的功能:跨平台和可移植,轻量级,支持IPv4和IPv6套接字以及许多其他有用的功能,如多线程。在非阻塞模式下使用套接字(虽然您也可以切换到阻塞模式)。具有相当好的文档和测试代码示例。


3

我不知道有哪个库能同时支持Windows和Linux,但我认为winsock与Linux套接字编程非常相似。

特别是它提供了“select()”和其他函数。我猜你需要一个非常薄的#ifdef包装器以避免类型转换警告。

在这里看winsock页面中的select



-2

Ptlib提供跨平台的C++代码,非常适用于套接字编程。www.opalvoip.org

对线程有很好的支持。对Mac和BSD也有一定的支持。正在积极开发和维护中。MPL核心库在Ekiga中使用 - 这是首选的桌面应用程序,可进行SIP和H.323。

对于Windows - 它可以使用MSVC编译。 对于Linux,它可以使用gcc autoconf make等编译。

好吧,它是C ++,但你可以处理它... 在ptlib / samples中有源代码 - 那里有许多使用ptlib的示例。


他特别要求使用C库。 - Chase

-3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接