简单的跨平台TCP IP API?

18
我不想使用类似于QT或wxWidgets的复杂API。我只需要在Android、iOS、Windows、Mac和Linux上运行的简单套接字。
我正在开发一个基于事件的卡牌游戏,因此TCP最好。
基本上,我只需要连接和验证客户端。之后,我只需要能够向他们发送消息。我本打算使用可靠的UDP,但TCP似乎更适合。
如果有人也有像TCP聊天应用程序这样的基本教程,我会很感激。
谢谢
我只想能够使用send(),recv()等函数,而不必担心WINSOCK或POSIX。

你可以尝试使用libuv或者liblacewing - James M
1
liblacewing 看起来非常完美!谢谢! - jmasterx
@James McLaughlin,Lacewing在iOS上工作吗?只有客户端和服务器类可以。如果不支持,您是否计划添加支持?谢谢! - jmasterx
1
@Milo 理论上它应该可以正常工作,但我从未尝试将其编译为iOS。如果不行,这肯定是将来不久会添加的内容。 - James M
3个回答

6

boost::asio 看起来很复杂。示例使用了智能指针和其他一些看起来不必要的东西。 - jmasterx
我只想要一个简单的教程,让我能够连接、发送、接收和断开连接。 - jmasterx
也许可以选择POSIX。如果您安装了正确的依赖项,POSIX代码可以在几乎所有操作系统上编译。 - David Mokon Bond
有人为什么要费心在Windows上使用Winsock来制作异常呢? - jmasterx
1
尽管它们可以正常工作,但由于仅有select(2)可用,Berkeley套接字在Windows上永远无法真正实现可扩展性。没有类似于epoll或kqueue的东西,而要使用I/O完成端口,您必须使用WSARecv而不是recv等函数。 - James M

1
我已经为BSD套接字API编写了一个非常简单、轻量级的包装器。它仅支持TCP/IP通信,使用服务器和客户端(服务器可以选择性地接受多个客户端连接)。
你可以在这里找到它:(不要关注Objective-C类,只使用tcpconnect.h和tcpconnect.c):http://github.com/H2CO3/TCPHelper

我也没有看到发送和接收数据的函数。 - jmasterx
如果您的Windows版本支持BSD套接字(由于它只是标准C,应该足够便携,尽管我不知道Windows在缺乏标准功能方面可能存在什么设计错误),请尝试使用它。如果正常工作,则很好,如果不行,我将删除我的答案。 - user529758
1
因为你将write()和read()作为我的函数返回文件描述符。 - user529758

0

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