【问题标题】:Simple cross platform TCP IP API?简单的跨平台 TCP IP API?
【发布时间】:2012-05-21 10:29:39
【问题描述】:

我不想使用像 QT 或 wxWidgets 的 API 这样的大的东西。我只想要可以在 Android、iOS、Windows、Mac、Linux 上运行的简单套接字。

我正在制作一个事件驱动的纸牌游戏,所以最好使用 TCP。

本质上,我只想连接和验证客户端。之后,我只需要能够向他们发送消息。我打算使用可靠的 UDP,但 TCP 似乎更合适。

如果有人也有类似 tcp 聊天应用程序的基本教程,我将不胜感激。

谢谢

我只是希望能够使用、send()、recv 等,而不用担心 WINSOCK 或 POSIX,

【问题讨论】:

  • 你可以试试libuvliblacewing
  • liblacewing 看起来很完美!谢谢!
  • @James McLaughlin Lacewing 在 iOS 上工作吗?好吧,只是客户端和服务器类。如果没有,您是否打算为此添加支持?谢谢!
  • @Milo 理论上它应该可以正常工作,但我从未尝试为 iOS 编译它。如果没有,那肯定会在不久的将来添加。

标签: c++ c api tcp


【解决方案1】:

Perharps Boost.Asio (http://boost.org) 或这个基于 Asio 的 http://libunicomm.org 可能对您有用。

【讨论】:

    【解决方案2】:

    我围绕 BSD 套接字 API 制作了一个非常简单、轻量级的包装器。它只进行 TCP/IP 通信,使用服务器和客户端(服务器可以选择接受多个客户端连接)。

    你可以在这里找到它:(不要介意 Objective-C 类,只使用 tcpconnect.h 和 tcpconnect.c):http://github.com/H2CO3/TCPHelper

    【讨论】:

    • 我也没有看到发送和接收数据的函数。
    • 如果您的 Windows 版本支持 BSD 套接字。 (因为它只是标准的 C,它应该是可移植的,虽然我不知道 Windows 在缺乏标准功能的意义上可能有什么样的设计错误)。 Ty它,如果它有效,很好,如果不是,我将删除我的答案。
    • 因为你 write() 和 read() 作为我的函数返回一个文件描述符。
    【解决方案3】:

    也许可以试试 BOOST Asio

    http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio.html

    重量够轻吗?

    【讨论】:

    • boost::asio 似乎很复杂。该示例使用了智能指针和其他一些看起来不必要的东西。
    • 我只是想要一些东西或一个简单的教程,让我可以连接发送接收和断开连接。
    • 也许就用 POSIX 吧。如果您获得正确的依赖关系,POSIX 代码几乎可以在每个操作系统上编译。
    • 那么为什么会有人在windows上破例使用winsock呢?
    • 虽然它们工作正常,但 berkeley 套接字永远无法在 Windows 上真正可扩展,因为只有 select(2) 可用。没有什么类似于 epoll 或 kqueue,要使用 I/O 完成端口,您必须使用 WSARecv 而不是 recv 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2018-07-31
    • 2010-10-08
    • 2015-05-20
    • 2011-02-06
    相关资源
    最近更新 更多