我想在Linux和Windows中进行套接字通信(监听,接受,连接,接收,发送,断开连接)。我的项目是用C语言编写的,所以除非有人能想出一种将C++库集成到C项目中的方法,否则该库也必须使用C语言编写。
最终,我希望该库具有IPv6支持和非阻塞模式,但这些并非必要条件。
是否有人知道任何跨平台的库/示例代码?即使只有大型代码片段也会有所帮助。到目前为止,我找到的几个套接字库都是用C++编写的。
我想在Linux和Windows中进行套接字通信(监听,接受,连接,接收,发送,断开连接)。我的项目是用C语言编写的,所以除非有人能想出一种将C++库集成到C项目中的方法,否则该库也必须使用C语言编写。
最终,我希望该库具有IPv6支持和非阻塞模式,但这些并非必要条件。
是否有人知道任何跨平台的库/示例代码?即使只有大型代码片段也会有所帮助。到目前为止,我找到的几个套接字库都是用C++编写的。
我能够想到四个库:
GLib框架的GLib Channels可以抽象套接字使用,但您需要特定于平台的代码来创建套接字。
libuv是node.js的平台抽象层,处理套接字和异步IO等内容。
Plibsys库提供了所有所需的功能:跨平台和可移植,轻量级,支持IPv4和IPv6套接字以及许多其他有用的功能,如多线程。在非阻塞模式下使用套接字(虽然您也可以切换到阻塞模式)。具有相当好的文档和测试代码示例。
我不知道有哪个库能同时支持Windows和Linux,但我认为winsock
与Linux套接字编程非常相似。
特别是它提供了“select()”和其他函数。我猜你需要一个非常薄的#ifdef包装器以避免类型转换警告。
Ptlib提供跨平台的C++代码,非常适用于套接字编程。www.opalvoip.org
对线程有很好的支持。对Mac和BSD也有一定的支持。正在积极开发和维护中。MPL核心库在Ekiga中使用 - 这是首选的桌面应用程序,可进行SIP和H.323。
对于Windows - 它可以使用MSVC编译。 对于Linux,它可以使用gcc autoconf make等编译。
好吧,它是C ++,但你可以处理它... 在ptlib / samples中有源代码 - 那里有许多使用ptlib的示例。