【问题标题】:Know of any cross platform socket library (windows & Linux) in C?知道 C 中的任何跨平台套接字库(Windows 和 Linux)吗?
【发布时间】:2012-03-01 08:32:32
【问题描述】:

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

最终,我希望库支持 ipv6 和非阻塞模式,但是,这些都不是必需的。

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

【问题讨论】:

    标签: c sockets tcp cross-platform


    【解决方案1】:

    副手,我能想到四个库:

    【讨论】:

    • 非常感谢,这是一个很棒的开始。目前,我正在研究 libuv,因为它似乎在大小/简单性和效率之间取得了很好的平衡。出于好奇,产生这些结果的搜索词是什么?还是你已经知道了?
    • @64bit_twitchyliquid:我不记得我第一次接触 GLib 是什么时候,但在我看来,它占据了 C 标准库的位置,更符合其他语言提供的功能;我在寻找平台抽象库时发现了 APR 和 NSPR,我知道 libuv,因为它被 Rust 编程语言使用;实际上,除了 libuv 之外的所有这些都列在 shlomifish.org/open-source/portability-libs 上,这是谷歌搜索 C 跨平台抽象库的第一个结果
    【解决方案2】:

    plibsys 库提供了所有要求的特性:跨平台和可移植、轻量级、提供套接字 IPv4 和 IPv6 支持以及许多其他有用的东西,例如多线程。在非阻塞模式下使用套接字(尽管您也可以切换到阻塞模式)。有很好的测试代码示例文档。

    【讨论】:

      【解决方案3】:

      我不知道有哪个库可以同时兼容 Windows 和 Linux,但我认为 winsock 与 Linux 套接字编程足够相似。

      特别是它为您提供“select()”和其他提到的功能。我想你需要一个非常薄的 #ifdef 包装器来避免类型转换警告。

      See here the winsock page for select

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        Ptlib 提供了适用于套接字的跨平台 C++ 代码。 www.opalvoip.org

        很好地处理线程。对 mac 和 BSD 的一些支持。正在积极开发和维护中。 MPL Ekiga 中的核心库 - 执行 SIP 和 H.323 的首选桌面应用

        对于 Windows - 它使用 MSVC 编译。 对于 linux,它使用 gcc autoconf make 等进行编译。

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

        【讨论】:

        • 他特意要了一个 C 库。
        【解决方案6】:

        The Boost library 包含这些功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-01
          • 1970-01-01
          • 2016-03-29
          相关资源
          最近更新 更多