跨平台的简单TCP/IP API?

6
我正在制作一个简单的跨平台聊天程序。我使用wXWidgets作为GUI,这很好用,但我需要一种创建套接字和创建服务器客户端设置的方法。是否有一个API,例如在Windows上使用WinSock,在Linux上使用本地套接字和osx的?我不想使用boost作为解决方案,因为我将开源它,而不是每个人都想安装一个70+ MB的库。

4
如果一个 C++ 开发者连安装 Boost 都懒得去做,那有点令人难过。 - Inverse
1
当我制作个人项目时,我使用Boost,但如果它们是开源或库项目,我会避免使用它,因为我很少看到依赖于它的库。 - jmasterx
5个回答

6

Winsock与POSIX套接字API非常兼容,并且大多数标准函数在两者中都可用。头文件的名称不同,但简单的#ifdef可以解决这个问题:

#ifdef _WIN32
#include <winsock2.h>
#else
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
// other headers you may use
#endif

5

4
如果发帖者认为Boost太过庞大,我认为Qt也不会更轻巧... - Inverse
是的,QT相当大,但是只静态链接所需的库将减小可执行文件的最终大小。 - hhafez

1

wxWidgets本身具有TCP客户端/服务器类:请参见此处


0

0
我回答这个七年前的问题,希望能在某一天帮到某个人(:

我没有找到一个跨平台、轻量级的套接字API。(有poco、boost asio和其他库,但它们都是大而全、复杂的库)

所以我在这里用POSIX套接字和Winsock做了一个简单(但不完整)的包装器:https://github.com/soroush/libcpnet


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