4

好吧,我一直想知道是否有 C++ 的标准套接字头文件

我确实搜索了整个互联网(使用谷歌搜索引擎),但找不到任何标准的 C++ 套接字头文件,除了找到一些库,如 Boost、chilkat 等......

我只成功地找到了 C 编程语言的标准套接字头文件。如果我使用 C 标准套接字头文件,但在我的 C++ 代码中,这是否意味着我的程序是纯 C++ 或 C 和 C++?

因为我没有找到任何标准的 C++ 套接字头文件。就像<string>C++ 和<string.h>C 一样,但 C++ 没有套接字标准头文件。

我希望 C/C++ 明智的人会一步一步地为我解释所有这些。

4

3 回答 3

7

C++ 中没有标准的套接字库。您可以使用操作系统提供的任何套接字 API(通常是 C API,在 Unix 操作系统上将是BSD 套接字 API),或者您可以使用跨平台的 C++ 库(如Boost.ASIO )。

于 2012-04-21T20:29:43.450 回答
2

BSD 套接字,由 Bill Joy 在 70 年代发明,可以说是“标准套接字 API”。

通常,您会包含以下标题:

#include <sys/socket.h> // Core BSD socket functions and data structures.
#include <netinet/in.h> // AF_INET and AF_INET6 address families and their
                        // corresponding protocol families PF_INET and PF_INET6.
#include <arpa/inet.h>  // Functions for manipulating numeric IP addresses.
#include <netdb.h>      // Name resolution

Beej's Guide 是关于套接字(BSD 套接字)编程的优秀教程:

http://beej.us/guide/bgnet/

于 2012-04-21T20:43:59.033 回答
0

如果您包含 c 头文件但使用 c++ 编译代码,那么它将生成一个 c++ 应用程序。您可以使用许多 c++ 框架,例如 Boost::asio、ACE、WinSock 等。这取决于您是否希望您的代码是可移植的,以及您的应用程序是否只能在特定的操作系统上运行,即。Linux、Mac 或 Windows。

此外,由于 C++ 是 C 的超集,因此无论您使用 C 还是 C++ 都无关紧要,因为您正在编译 C++ 程序,因此您生成的 C++ 纯粹而简单。

于 2012-04-21T20:39:12.280 回答